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