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