Merge branch 'master' of git+ssh://puppet.debian.org/srv/puppet.debian.org/git/dsa...
[mirror/dsa-puppet.git] / modules / ferm / manifests / per_host.pp
1 class ferm::per_host {
2         if $::hostname in [zandonai,zelenka] {
3                 include ferm::zivit
4         }
5
6         if (getfromhash($site::nodeinfo, 'hoster', 'name') == "aql") {
7                 include ferm::aql
8         }
9
10         case $::hostname {
11                 czerny,clementi: {
12                         @ferm::rule { 'dsa-upsmon':
13                                 description     => 'Allow upsmon access',
14                                 rule            => '&SERVICE_RANGE(tcp, 3493, ( 82.195.75.64/26 192.168.43.0/24 ))'
15                         }
16                 }
17                 bendel: {
18                         @ferm::rule { 'listmaster-ontp-in':
19                                 description => 'ONTP has a broken mail setup',
20                                 table       => 'filter',
21                                 chain       => 'INPUT',
22                                 rule        => 'source 188.165.23.89/32 proto tcp dport 25 jump DROP',
23                         }
24                         @ferm::rule { 'listmaster-ontp-out':
25                                 description => 'ONTP has a broken mail setup',
26                                 table       => 'filter',
27                                 chain       => 'OUTPUT',
28                                 rule        => 'destination 78.8.208.246/32 proto tcp dport 25 jump DROP',
29                         }
30                 }
31                 lotti,lully,loghost-grnet-01: {
32                         @ferm::rule { 'dsa-syslog':
33                                 description     => 'Allow syslog access',
34                                 rule            => '&SERVICE_RANGE(tcp, 5140, $HOST_DEBIAN_V4)'
35                         }
36                         @ferm::rule { 'dsa-syslog-v6':
37                                 domain          => 'ip6',
38                                 description     => 'Allow syslog access',
39                                 rule            => '&SERVICE_RANGE(tcp, 5140, $HOST_DEBIAN_V6)'
40                         }
41                 }
42                 kaufmann: {
43                         @ferm::rule { 'dsa-hkp':
44                                 domain          => '(ip ip6)',
45                                 description     => 'Allow hkp access',
46                                 rule            => '&SERVICE(tcp, 11371)'
47                         }
48                 }
49                 gombert: {
50                         @ferm::rule { 'dsa-infinoted':
51                                 domain          => '(ip ip6)',
52                                 description     => 'Allow infinoted access',
53                                 rule            => '&SERVICE(tcp, 6523)'
54                         }
55                 }
56                 draghi: {
57                         @ferm::rule { 'dsa-finger':
58                                 domain          => '(ip ip6)',
59                                 description     => 'Allow finger access',
60                                 rule            => '&SERVICE(tcp, 79)'
61                         }
62                         @ferm::rule { 'dsa-ldap':
63                                 domain          => '(ip ip6)',
64                                 description     => 'Allow ldap access',
65                                 rule            => '&SERVICE(tcp, 389)'
66                         }
67                         @ferm::rule { 'dsa-ldaps':
68                                 domain          => '(ip ip6)',
69                                 description     => 'Allow ldaps access',
70                                 rule            => '&SERVICE(tcp, 636)'
71                         }
72                 }
73                 sonntag: {
74                         @ferm::rule { 'dsa-bugs-search':
75                                 description  => 'port 1978 for bugs-search from bug web frontends',
76                                 rule         => '&SERVICE_RANGE(tcp, 1978, ( 140.211.166.26 209.87.16.39 ))'
77                         }
78                 }
79                 default: {}
80         }
81
82         # redirect snapshot into varnish
83         case $::hostname {
84                 sibelius: {
85                         @ferm::rule { 'dsa-snapshot-varnish':
86                                 rule            => '&SERVICE(tcp, 6081)',
87                         }
88                         @ferm::rule { 'dsa-nat-snapshot-varnish':
89                                 table           => 'nat',
90                                 chain           => 'PREROUTING',
91                                 rule            => 'proto tcp daddr 193.62.202.30 dport 80 REDIRECT to-ports 6081',
92                         }
93                 }
94                 lw07: {
95                         @ferm::rule { 'dsa-snapshot-varnish':
96                                 rule            => '&SERVICE(tcp, 6081)',
97                         }
98                         @ferm::rule { 'dsa-nat-snapshot-varnish':
99                                 table           => 'nat',
100                                 chain           => 'PREROUTING',
101                                 rule            => 'proto tcp daddr 185.17.185.185 dport 80 REDIRECT to-ports 6081',
102                         }
103                 }
104                 default: {}
105         }
106         case $::hostname {
107                 bm-bl1,bm-bl2: {
108                         @ferm::rule { 'dsa-vrrp':
109                                 rule            => 'proto vrrp daddr 224.0.0.18 jump ACCEPT',
110                         }
111                         @ferm::rule { 'dsa-conntrackd':
112                                 rule            => 'interface vlan2 daddr 225.0.0.50 jump ACCEPT',
113                         }
114                         @ferm::rule { 'dsa-bind-notrack-in':
115                                 domain      => 'ip',
116                                 description => 'NOTRACK for nameserver traffic',
117                                 table       => 'raw',
118                                 chain       => 'PREROUTING',
119                                 rule        => 'proto (tcp udp) daddr 5.153.231.24 dport 53 jump NOTRACK'
120                         }
121
122                         @ferm::rule { 'dsa-bind-notrack-out':
123                                 domain      => 'ip',
124                                 description => 'NOTRACK for nameserver traffic',
125                                 table       => 'raw',
126                                 chain       => 'OUTPUT',
127                                 rule        => 'proto (tcp udp) saddr 5.153.231.24 sport 53 jump NOTRACK'
128                         }
129
130                         @ferm::rule { 'dsa-bind-notrack-in6':
131                                 domain      => 'ip6',
132                                 description => 'NOTRACK for nameserver traffic',
133                                 table       => 'raw',
134                                 chain       => 'PREROUTING',
135                                 rule        => 'proto (tcp udp) daddr 2001:41c8:1000:21::21:24 dport 53 jump NOTRACK'
136                         }
137
138                         @ferm::rule { 'dsa-bind-notrack-out6':
139                                 domain      => 'ip6',
140                                 description => 'NOTRACK for nameserver traffic',
141                                 table       => 'raw',
142                                 chain       => 'OUTPUT',
143                                 rule        => 'proto (tcp udp) saddr 2001:41c8:1000:21::21:24 sport 53 jump NOTRACK'
144                         }
145                 }
146                 default: {}
147         }
148
149         # elasticsearch stuff
150         case $::hostname {
151                 stockhausen: {
152                         @ferm::rule { 'dsa-elasticsearch-bendel':
153                                 domain          => '(ip)',
154                                 description     => 'Allow elasticsearch access from bendel',
155                                 rule            => '&SERVICE_RANGE(tcp, 9200:9300, ( 82.195.75.100/32 ))'
156                         }
157                         @ferm::rule { 'dsa-elasticsearch-bendel6':
158                                 domain          => '(ip6)',
159                                 description     => 'Allow elasticsearch access from bendel',
160                                 rule            => '&SERVICE_RANGE(tcp, 9200:9300, ( 2001:41b8:202:deb:216:36ff:fe40:4002/128 ))'
161                         }
162                 }
163         }
164
165         # postgres stuff
166         case $::hostname {
167                 ullmann: {
168                         @ferm::rule { 'dsa-postgres-udd':
169                                 description     => 'Allow postgress access',
170                                 # quantz, moszumanska, master, coccia
171                                 rule            => '&SERVICE_RANGE(tcp, 5452, ( 5.153.231.28/32 5.153.231.21/32 82.195.75.110/32 5.153.231.11/32 ))'
172                         }
173                         @ferm::rule { 'dsa-postgres-udd6':
174                                 domain          => '(ip6)',
175                                 description     => 'Allow postgress access',
176                                 rule            => '&SERVICE_RANGE(tcp, 5452, ( 2001:41c8:1000:21::21:28/128 2001:41b8:202:deb:216:36ff:fe40:4001/128 2001:41c8:1000:21::21:11/32 2001:41c8:1000:21::21:21/128 ))'
177                         }
178                 }
179                 fasolo: {
180                         @ferm::rule { 'dsa-postgres-fasolo':
181                                 description     => 'Allow postgress access',
182                                 rule            => '&SERVICE_RANGE(tcp, 5433, ( 5.153.231.10/32 ))'
183                         }
184                         @ferm::rule { 'dsa-postgres-fasolo6':
185                                 domain          => 'ip6',
186                                 description     => 'Allow postgress access',
187                                 rule            => '&SERVICE_RANGE(tcp, 5433, ( 2001:41c8:1000:21::21:10/128 ))'
188                         }
189
190                         @ferm::rule { 'dsa-postgres-backup':
191                                 description     => 'Allow postgress access',
192                                 rule            => '&SERVICE_RANGE(tcp, 5433, ( $HOST_PGBACKUPHOST_V4 ))'
193                         }
194                         @ferm::rule { 'dsa-postgres-backup6':
195                                 domain          => 'ip6',
196                                 description     => 'Allow postgress access',
197                                 rule            => '&SERVICE_RANGE(tcp, 5433, ( $HOST_PGBACKUPHOST_V6 ))'
198                         }
199                 }
200                 bmdb1: {
201                         @ferm::rule { 'dsa-postgres-main':
202                                 description     => 'Allow postgress access',
203                                 rule            => '&SERVICE_RANGE(tcp, 5435, ( 5.153.231.23/32 5.153.231.25/32 209.87.16.38/32 5.153.231.26/32 5.153.231.18/32 5.153.231.28/32 5.153.231.249/32 5.153.231.29/32 5.153.231.43/32 5.153.231.33/32 ))'
204                         }
205                         @ferm::rule { 'dsa-postgres-main6':
206                                 domain          => 'ip6',
207                                 description     => 'Allow postgress access',
208                                 rule            => '&SERVICE_RANGE(tcp, 5435, ( 2001:41c8:1000:21::21:23/128 2001:41c8:1000:21::21:25/128 2607:f8f0:614:1::1274:38/128 2001:41c8:1000:21::21:26/128 2001:41c8:1000:21::21:18/128 2001:41c8:1000:21::21:28/128 2001:41c8:1000:20::20:249/128 2001:41c8:1000:21::21:29/128 2001:41c8:1000:21::21:43/128 2001:41c8:1000:21::21:33/128 ))'
209                         }
210                         @ferm::rule { 'dsa-postgres-dak':
211                                 description     => 'Allow postgress access',
212                                 rule            => '&SERVICE_RANGE(tcp, 5434, ( 5.153.231.11/32 5.153.231.28/32 209.87.16.26/32 5.153.231.21/32 5.153.231.18/32 5.153.231.29/32 128.31.0.69/32 ))'
213                         }
214                         @ferm::rule { 'dsa-postgres-dak6':
215                                 domain          => 'ip6',
216                                 description     => 'Allow postgress access',
217                                 rule            => '&SERVICE_RANGE(tcp, 5434, ( 2001:41c8:1000:21::21:11/128 2001:41c8:1000:21::21:28/128 2607:f8f0:614:1::1274:26/128 2001:41c8:1000:21::21:21/128 2001:41c8:1000:21::21:18/128 2001:41c8:1000:21::21:29/128 ))'
218                         }
219                         @ferm::rule { 'dsa-postgres-wannabuild':
220                                 # wuiet, ullmann
221                                 description     => 'Allow postgress access',
222                                 rule            => '&SERVICE_RANGE(tcp, 5436, ( 5.153.231.18/32 209.87.16.38/32 ))'
223                         }
224                         @ferm::rule { 'dsa-postgres-wannabuild6':
225                                 domain          => 'ip6',
226                                 description     => 'Allow postgress access',
227                                 rule            => '&SERVICE_RANGE(tcp, 5436, ( 2001:41c8:1000:21::21:18/128 2607:f8f0:614:1::1274:38/128 ))'
228                         }
229                         @ferm::rule { 'dsa-postgres-bacula':
230                                 # dinis
231                                 description     => 'Allow postgress access1',
232                                 rule            => '&SERVICE_RANGE(tcp, 5437, ( 5.153.231.19/32 93.94.130.161/32 ))'
233                         }
234                         @ferm::rule { 'dsa-postgres-bacula6':
235                                 domain          => 'ip6',
236                                 description     => 'Allow postgress access1',
237                                 rule            => '&SERVICE_RANGE(tcp, 5437, ( 2001:41c8:1000:21::21:19/128 2a02:158:380:280::161/128 ))'
238                         }
239
240                         @ferm::rule { 'dsa-postgres-backup':
241                                 description     => 'Allow postgress access',
242                                 rule            => '&SERVICE_RANGE(tcp, (5435 5436 5440), ( $HOST_PGBACKUPHOST_V4 ))'
243                         }
244                         @ferm::rule { 'dsa-postgres-backup6':
245                                 domain          => 'ip6',
246                                 description     => 'Allow postgress access',
247                                 rule            => '&SERVICE_RANGE(tcp, (5435 5436 5440), ( $HOST_PGBACKUPHOST_V6 ))'
248                         }
249
250                         @ferm::rule { 'dsa-postgres-dedup':
251                                 # ubc, wuit
252                                 description     => 'Allow postgress access',
253                                 rule            => '&SERVICE_RANGE(tcp, (5439), ( 5.153.231.17/32 ))'
254                         }
255                         @ferm::rule { 'dsa-postgres-dedup6':
256                                 domain          => 'ip6',
257                                 description     => 'Allow postgress access',
258                                 rule            => '&SERVICE_RANGE(tcp, (5439), ( 2001:41c8:1000:21::21:17/128 ))'
259                         }
260
261                         @ferm::rule { 'dsa-postgres-debsources':
262                                 description     => 'Allow postgress access',
263                                 rule            => '&SERVICE_RANGE(tcp, (5440), ( 5.153.231.38/32 ))'
264                         }
265                         @ferm::rule { 'dsa-postgres-debsources6':
266                                 domain          => 'ip6',
267                                 description     => 'Allow postgress access',
268                                 rule            => '&SERVICE_RANGE(tcp, (5440), ( 2001:41c8:1000:21::21:38/128 ))'
269                         }
270                 }
271                 danzi: {
272                         @ferm::rule { 'dsa-postgres-danzi':
273                                 # ubc, wuit
274                                 description     => 'Allow postgress access',
275                                 rule            => '&SERVICE_RANGE(tcp, 5433, ( 206.12.19.0/24 209.87.16.0/24 5.153.231.18/32 ))'
276                         }
277                         @ferm::rule { 'dsa-postgres-danzi6':
278                                 domain          => 'ip6',
279                                 description     => 'Allow postgress access',
280                                 rule            => '&SERVICE_RANGE(tcp, 5433, ( 2607:f8f0:610:4000::/64 2607:f8f0:614:1::/64 2001:41c8:1000:21::21:18/128 ))'
281                         }
282
283                         @ferm::rule { 'dsa-postgres2-danzi':
284                                 description     => 'Allow postgress access2',
285                                 rule            => '&SERVICE_RANGE(tcp, 5437, ( 206.12.19.0/24 209.87.16.0/24 ))'
286                         }
287                         @ferm::rule { 'dsa-postgres3-danzi':
288                                 description     => 'Allow postgress access3',
289                                 rule            => '&SERVICE_RANGE(tcp, 5436, ( 206.12.19.0/24 209.87.16.0/24 ))'
290                         }
291                         @ferm::rule { 'dsa-postgres4-danzi':
292                                 description     => 'Allow postgress access4',
293                                 rule            => '&SERVICE_RANGE(tcp, 5438, ( 206.12.19.0/24 209.87.16.0/24 ))'
294                         }
295
296                         @ferm::rule { 'dsa-postgres-backup':
297                                 description     => 'Allow postgress access',
298                                 rule            => '&SERVICE_RANGE(tcp, 5433, ( $HOST_PGBACKUPHOST_V4 ))'
299                         }
300                         @ferm::rule { 'dsa-postgres-backup6':
301                                 domain          => 'ip6',
302                                 description     => 'Allow postgress access',
303                                 rule            => '&SERVICE_RANGE(tcp, 5433, ( $HOST_PGBACKUPHOST_V6 ))'
304                         }
305                 }
306                 seger: {
307                         @ferm::rule { 'dsa-postgres-backup':
308                                 description     => 'Allow postgress access',
309                                 rule            => '&SERVICE_RANGE(tcp, 5432, ( $HOST_PGBACKUPHOST_V4 ))'
310                         }
311                         @ferm::rule { 'dsa-postgres-backup6':
312                                 domain          => 'ip6',
313                                 description     => 'Allow postgress access',
314                                 rule            => '&SERVICE_RANGE(tcp, 5432, ( $HOST_PGBACKUPHOST_V6 ))'
315                         }
316                 }
317                 sibelius: {
318                         @ferm::rule { 'dsa-postgres-backup':
319                                 description     => 'Allow postgress access',
320                                 rule            => '&SERVICE_RANGE(tcp, 5433, ( $HOST_PGBACKUPHOST_V4 ))'
321                         }
322                         @ferm::rule { 'dsa-postgres-backup6':
323                                 domain          => 'ip6',
324                                 description     => 'Allow postgress access',
325                                 rule            => '&SERVICE_RANGE(tcp, 5433, ( $HOST_PGBACKUPHOST_V6 ))'
326                         }
327                         @ferm::rule { 'dsa-postgres-replication':
328                                 description     => 'Allow postgress access',
329                                 rule            => '&SERVICE_RANGE(tcp, 5433, ( 185.17.185.187/32 ))'
330                         }
331                         @ferm::rule { 'dsa-postgres-replication6':
332                                 domain          => 'ip6',
333                                 description     => 'Allow postgress access',
334                                 rule            => '&SERVICE_RANGE(tcp, 5433, ( 2001:1af8:4020:b030:deb::187/128 ))'
335                         }
336                 }
337                 lw07: {
338                         @ferm::rule { 'dsa-postgres-snapshot':
339                                 description     => 'Allow postgress access',
340                                 rule            => '&SERVICE_RANGE(tcp, 5439, ( 185.17.185.176/28 ))'
341                         }
342                         @ferm::rule { 'dsa-postgres-snapshot6':
343                                 domain          => 'ip6',
344                                 description     => 'Allow postgress access',
345                                 rule            => '&SERVICE_RANGE(tcp, 5439, ( 2001:1af8:4020:b030::/64 ))'
346                         }
347                 }
348                 melartin,vittoria: {
349                         @ferm::rule { 'dsa-postgres-backup':
350                                 description     => 'Allow postgress access',
351                                 rule            => '&SERVICE_RANGE(tcp, 5432, ( $HOST_PGBACKUPHOST_V4 ))'
352                         }
353                         @ferm::rule { 'dsa-postgres-backup6':
354                                 domain          => 'ip6',
355                                 description     => 'Allow postgress access',
356                                 rule            => '&SERVICE_RANGE(tcp, 5432, ( $HOST_PGBACKUPHOST_V6 ))'
357                         }
358                 }
359                 buxtehude: {
360                         @ferm::rule { 'dsa-postgres-backup':
361                                 description     => 'Allow postgress access',
362                                 rule            => '&SERVICE_RANGE(tcp, (5433 5441), ( $HOST_PGBACKUPHOST_V4 ))'
363                         }
364                         @ferm::rule { 'dsa-postgres-backup6':
365                                 domain          => 'ip6',
366                                 description     => 'Allow postgress access',
367                                 rule            => '&SERVICE_RANGE(tcp, (5433 5441), ( $HOST_PGBACKUPHOST_V6 ))'
368                         }
369                 }
370                 default: {}
371         }
372         # vpn fu
373         case $::hostname {
374                 draghi: {
375                         @ferm::rule { 'dsa-vpn':
376                                 description     => 'Allow openvpn access',
377                                 rule            => '&SERVICE(udp, 17257)'
378                         }
379                         @ferm::rule { 'dsa-routing':
380                                 description     => 'forward chain',
381                                 chain           => 'FORWARD',
382                                 rule            => 'policy ACCEPT;
383 mod state state (ESTABLISHED RELATED) ACCEPT;
384 interface tun+ ACCEPT;
385 REJECT reject-with icmp-admin-prohibited
386 '
387                         }
388                         @ferm::rule { 'dsa-vpn-mark':
389                                 table           => 'mangle',
390                                 chain           => 'PREROUTING',
391                                 rule            => 'interface tun+ MARK set-mark 1',
392                         }
393                         @ferm::rule { 'dsa-vpn-nat':
394                                 table           => 'nat',
395                                 chain           => 'POSTROUTING',
396                                 rule            => 'outerface !tun+ mod mark mark 1 MASQUERADE',
397                         }
398                 }
399                 ubc-enc2bl01,ubc-enc2bl02,ubc-enc2bl09,ubc-enc2bl10: {
400                         @ferm::rule { 'dsa-luca-fixme':
401                                 description     => 'Allow ssh access from mnt and vpn networks',
402                                 rule            => '&SERVICE_RANGE(tcp, 22, ( 172.29.40.0/22 172.29.203.0/24 ))',
403                         }
404                 }
405                 default: {}
406         }
407         # tftp
408         case $::hostname {
409                 abel: {
410                         @ferm::rule { 'dsa-tftp':
411                                 description     => 'Allow tftp access',
412                                 rule            => '&SERVICE_RANGE(udp, 69, ( 172.28.17.0/24 ))'
413                         }
414                 }
415                 master: {
416                         @ferm::rule { 'dsa-tftp':
417                                 description     => 'Allow tftp access',
418                                 rule            => '&SERVICE_RANGE(udp, 69, ( 82.195.75.64/26 192.168.43.0/24 ))'
419                         }
420                 }
421         }
422 }