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