Allow access to wanna-build@bmdb1 from respighi
[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,loghost-grnet-01,loghost-osuosl-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                 default: {}
64         }
65
66         case $::hostname {
67                 bm-bl1,bm-bl2: {
68                         @ferm::rule { 'dsa-vrrp':
69                                 rule            => 'proto vrrp daddr 224.0.0.18 jump ACCEPT',
70                         }
71                         @ferm::rule { 'dsa-bind-notrack-in':
72                                 domain      => 'ip',
73                                 description => 'NOTRACK for nameserver traffic',
74                                 table       => 'raw',
75                                 chain       => 'PREROUTING',
76                                 rule        => 'proto (tcp udp) daddr 5.153.231.24 dport 53 jump NOTRACK'
77                         }
78
79                         @ferm::rule { 'dsa-bind-notrack-out':
80                                 domain      => 'ip',
81                                 description => 'NOTRACK for nameserver traffic',
82                                 table       => 'raw',
83                                 chain       => 'OUTPUT',
84                                 rule        => 'proto (tcp udp) saddr 5.153.231.24 sport 53 jump NOTRACK'
85                         }
86
87                         @ferm::rule { 'dsa-bind-notrack-in6':
88                                 domain      => 'ip6',
89                                 description => 'NOTRACK for nameserver traffic',
90                                 table       => 'raw',
91                                 chain       => 'PREROUTING',
92                                 rule        => 'proto (tcp udp) daddr 2001:41c8:1000:21::21:24 dport 53 jump NOTRACK'
93                         }
94
95                         @ferm::rule { 'dsa-bind-notrack-out6':
96                                 domain      => 'ip6',
97                                 description => 'NOTRACK for nameserver traffic',
98                                 table       => 'raw',
99                                 chain       => 'OUTPUT',
100                                 rule        => 'proto (tcp udp) saddr 2001:41c8:1000:21::21:24 sport 53 jump NOTRACK'
101                         }
102                 }
103                 default: {}
104         }
105
106         # postgres stuff
107         case $::hostname {
108                 ullmann: {
109                         @ferm::rule { 'dsa-postgres-udd':
110                                 description     => 'Allow postgress access',
111                                 domain          => '(ip ip6)',
112                                 # quantz, master, coccia
113                                 rule            => @("EOF")
114                                         &SERVICE_RANGE(tcp, 5452, (
115                                                 ${ join(getfromhash($site::allnodeinfo, 'quantz.debian.org', 'ipHostNumber'), " ") }
116                                                 ${ join(getfromhash($site::allnodeinfo, 'master.debian.org', 'ipHostNumber'), " ") }
117                                                 ${ join(getfromhash($site::allnodeinfo, 'coccia.debian.org', 'ipHostNumber'), " ") }
118                                                 ${ join(getfromhash($site::allnodeinfo, 'respighi.debian.org', 'ipHostNumber'), " ") }
119                                                 ${ join(getfromhash($site::allnodeinfo, 'wuiet.debian.org', 'ipHostNumber'), " ") }
120                                         ))
121                                         | EOF
122                         }
123                 }
124                 fasolo: {
125                         @ferm::rule { 'dsa-postgres':
126                                 description     => 'Allow postgress access',
127                                 domain          => '(ip ip6)',
128                                 rule            => @("EOF"/$)
129                                         &SERVICE_RANGE(tcp, 5433, (
130                                                 ${ join(getfromhash($site::allnodeinfo, 'bmdb1.debian.org', 'ipHostNumber'), " ") }
131                                                 \$HOST_PGBACKUPHOST
132                                         ))
133                                         | EOF
134                         }
135                 }
136                 bmdb1: {
137                         @ferm::rule { 'dsa-postgres-main':
138                                 description     => 'Allow postgress access to cluster: main',
139                                 domain          => '(ip ip6)',
140                                 rule            => @("EOF"/$)
141                                         &SERVICE_RANGE(tcp, 5435, (
142                                                 ${ join(getfromhash($site::allnodeinfo, 'ticharich.debian.org', 'ipHostNumber'), " ") }
143                                                 ${ join(getfromhash($site::allnodeinfo, 'petrova.debian.org', 'ipHostNumber'), " ") }
144                                                 ${ join(getfromhash($site::allnodeinfo, 'ullmann.debian.org', 'ipHostNumber'), " ") }
145                                                 ${ join(getfromhash($site::allnodeinfo, 'olin.debian.org', 'ipHostNumber'), " ") }
146                                                 ${ join(getfromhash($site::allnodeinfo, 'wuiet.debian.org', 'ipHostNumber'), " ") }
147                                                 ${ join(getfromhash($site::allnodeinfo, 'quantz.debian.org', 'ipHostNumber'), " ") }
148                                                 ${ join(getfromhash($site::allnodeinfo, 'respighi.debian.org', 'ipHostNumber'), " ") }
149                                                 ${ join(getfromhash($site::allnodeinfo, 'rusca.debian.org', 'ipHostNumber'), " ") }
150                                                 ${ join(getfromhash($site::allnodeinfo, 'tate.debian.org', 'ipHostNumber'), " ") }
151                                                 \$HOST_PGBACKUPHOST
152                                         ))
153                                         | EOF
154                         }
155                         @ferm::rule { 'dsa-postgres-dak':
156                                 description     => 'Allow postgress access to cluster: dak',
157                                 domain          => '(ip ip6)',
158                                 rule            => @("EOF"/$)
159                                         &SERVICE_RANGE(tcp, 5434, (
160                                                 ${ join(getfromhash($site::allnodeinfo, 'coccia.debian.org', 'ipHostNumber'), " ") }
161                                                 ${ join(getfromhash($site::allnodeinfo, 'quantz.debian.org', 'ipHostNumber'), " ") }
162                                                 ${ join(getfromhash($site::allnodeinfo, 'nono.debian.org', 'ipHostNumber'), " ") }
163                                                 ${ join(getfromhash($site::allnodeinfo, 'wuiet.debian.org', 'ipHostNumber'), " ") }
164                                                 ${ join(getfromhash($site::allnodeinfo, 'respighi.debian.org', 'ipHostNumber'), " ") }
165                                                 ${ join(getfromhash($site::allnodeinfo, 'usper.debian.org', 'ipHostNumber'), " ") }
166                                         ))
167                                         | EOF
168                         }
169                         @ferm::rule { 'dsa-postgres-wannabuild':
170                                 description     => 'Allow postgress access to cluster: wannabuild',
171                                 domain          => '(ip ip6)',
172                                 rule            => @("EOF"/$)
173                                         &SERVICE_RANGE(tcp, 5436, (
174                                                 ${ join(getfromhash($site::allnodeinfo, 'respighi.debian.org', 'ipHostNumber'), " ") }
175                                                 ${ join(getfromhash($site::allnodeinfo, 'wuiet.debian.org', 'ipHostNumber'), " ") }
176                                                 ${ join(getfromhash($site::allnodeinfo, 'ullmann.debian.org', 'ipHostNumber'), " ") }
177                                                 \$HOST_PGBACKUPHOST
178                                         ))
179                                         | EOF
180                         }
181                         @ferm::rule { 'dsa-postgres-bacula':
182                                 description     => 'Allow postgress access to cluster: bacula',
183                                 domain          => '(ip ip6)',
184                                 rule            => @("EOF"/$)
185                                         &SERVICE_RANGE(tcp, 5437, (
186                                                 ${ join(getfromhash($site::allnodeinfo, 'dinis.debian.org', 'ipHostNumber'), " ") }
187                                                 ${ join(getfromhash($site::allnodeinfo, 'storace.debian.org', 'ipHostNumber'), " ") }
188                                                 \$HOST_PGBACKUPHOST
189                                         ))
190                                         | EOF
191                         }
192                         @ferm::rule { 'dsa-postgres-dedup':
193                                 description     => 'Allow postgress access to cluster: dedup',
194                                 domain          => '(ip ip6)',
195                                 rule            => @("EOF"/$)
196                                         &SERVICE_RANGE(tcp, 5439, (
197                                                 ${ join(getfromhash($site::allnodeinfo, 'delfin.debian.org', 'ipHostNumber'), " ") }
198                                         ))
199                                         | EOF
200                         }
201                         @ferm::rule { 'dsa-postgres-debsources':
202                                 description     => 'Allow postgress access to cluster: debsources',
203                                 domain          => '(ip ip6)',
204                                 rule            => @("EOF"/$)
205                                         &SERVICE_RANGE(tcp, 5440, (
206                                                 ${ join(getfromhash($site::allnodeinfo, 'sor.debian.org', 'ipHostNumber'), " ") }
207                                                 \$HOST_PGBACKUPHOST
208                                         ))
209                                         | EOF
210                         }
211                 }
212                 danzi: {
213                         @ferm::rule { 'dsa-postgres-danzi':
214                                 # ubc, wuiet
215                                 description     => 'Allow postgress access',
216                                 rule            => '&SERVICE_RANGE(tcp, 5433, ( 206.12.19.0/24 209.87.16.0/24 5.153.231.18/32 ))'
217                         }
218                         @ferm::rule { 'dsa-postgres-danzi6':
219                                 domain          => 'ip6',
220                                 description     => 'Allow postgress access',
221                                 rule            => '&SERVICE_RANGE(tcp, 5433, ( 2607:f8f0:610:4000::/64 2607:f8f0:614:1::/64 2001:41c8:1000:21::21:18/128 ))'
222                         }
223
224                         @ferm::rule { 'dsa-postgres2-danzi':
225                                 description     => 'Allow postgress access2',
226                                 rule            => '&SERVICE_RANGE(tcp, 5434, ( 209.87.16.0/24 ))'
227                         }
228                         @ferm::rule { 'dsa-postgres2-danzi6':
229                                 domain          => 'ip6',
230                                 description     => 'Allow postgress access2',
231                                 rule            => '&SERVICE_RANGE(tcp, 5434, ( 2607:f8f0:614:1::/64 ))'
232                         }
233                 }
234                 seger: {
235                         @ferm::rule { 'dsa-postgres-backup':
236                                 description     => 'Allow postgress access',
237                                 rule            => '&SERVICE_RANGE(tcp, 5432, ( $HOST_PGBACKUPHOST_V4 ))'
238                         }
239                         @ferm::rule { 'dsa-postgres-backup6':
240                                 domain          => 'ip6',
241                                 description     => 'Allow postgress access',
242                                 rule            => '&SERVICE_RANGE(tcp, 5432, ( $HOST_PGBACKUPHOST_V6 ))'
243                         }
244                 }
245                 sallinen: {
246                         @ferm::rule { 'dsa-postgres':
247                                 description     => 'Allow postgress access',
248                                 domain          => '(ip ip6)',
249                                 rule            => @("EOF"/$)
250                                         &SERVICE_RANGE(tcp, 5473, (
251                                                 ${ join(getfromhash($site::allnodeinfo, 'lw07.debian.org', 'ipHostNumber'), " ") }
252                                                 \$HOST_PGBACKUPHOST
253                                         ))
254                                         | EOF
255                         }
256                 }
257                 lw07: {
258                         @ferm::rule { 'dsa-postgres-snapshot':
259                                 description     => 'Allow postgress access',
260                                 rule            => '&SERVICE_RANGE(tcp, 5439, ( 185.17.185.176/28 ))'
261                         }
262                         @ferm::rule { 'dsa-postgres-snapshot6':
263                                 domain          => 'ip6',
264                                 description     => 'Allow postgress access',
265                                 rule            => '&SERVICE_RANGE(tcp, 5439, ( 2001:1af8:4020:b030::/64 ))'
266                         }
267                 }
268                 default: {}
269         }
270         # vpn fu
271         case $::hostname {
272                 draghi: {
273                         @ferm::rule { 'dsa-vpn':
274                                 description     => 'Allow openvpn access',
275                                 rule            => '&SERVICE(udp, 17257)'
276                         }
277                         @ferm::rule { 'dsa-routing':
278                                 description     => 'forward chain',
279                                 chain           => 'FORWARD',
280                                 rule            => 'policy ACCEPT;
281 mod state state (ESTABLISHED RELATED) ACCEPT;
282 interface tun+ ACCEPT;
283 REJECT reject-with icmp-admin-prohibited
284 '
285                         }
286                         @ferm::rule { 'dsa-vpn-mark':
287                                 table           => 'mangle',
288                                 chain           => 'PREROUTING',
289                                 rule            => 'interface tun+ MARK set-mark 1',
290                         }
291                         @ferm::rule { 'dsa-vpn-nat':
292                                 table           => 'nat',
293                                 chain           => 'POSTROUTING',
294                                 rule            => 'outerface !tun+ mod mark mark 1 MASQUERADE',
295                         }
296                 }
297                 ubc-enc2bl01,ubc-enc2bl02,ubc-enc2bl09,ubc-enc2bl10: {
298                         @ferm::rule { 'dsa-luca-fixme':
299                                 description     => 'Allow ssh access from mnt and vpn networks',
300                                 rule            => '&SERVICE_RANGE(tcp, 22, ( 172.29.40.0/22 172.29.203.0/24 ))',
301                         }
302                 }
303                 default: {}
304         }
305         # tftp
306         case $::hostname {
307                 abel: {
308                         @ferm::rule { 'dsa-tftp':
309                                 description     => 'Allow tftp access',
310                                 rule            => '&SERVICE_RANGE(udp, 69, ( 172.28.17.0/24 ))'
311                         }
312                 }
313                 master: {
314                         @ferm::rule { 'dsa-tftp':
315                                 description     => 'Allow tftp access',
316                                 rule            => '&SERVICE_RANGE(udp, 69, ( 82.195.75.64/26 192.168.43.0/24 ))'
317                         }
318                 }
319         }
320 }