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