test avoiding hardcoding addresses
[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                 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                                         ))
120                                         | EOF
121                         }
122                 }
123                 fasolo: {
124                         @ferm::rule { 'dsa-postgres-fasolo':
125                                 description     => 'Allow postgress access',
126                                 rule            => '&SERVICE_RANGE(tcp, 5433, ( 5.153.231.10/32 ))'
127                         }
128                         @ferm::rule { 'dsa-postgres-fasolo6':
129                                 domain          => 'ip6',
130                                 description     => 'Allow postgress access',
131                                 rule            => '&SERVICE_RANGE(tcp, 5433, ( 2001:41c8:1000:21::21:10/128 ))'
132                         }
133
134                         @ferm::rule { 'dsa-postgres-backup':
135                                 description     => 'Allow postgress access',
136                                 rule            => '&SERVICE_RANGE(tcp, 5433, ( $HOST_PGBACKUPHOST_V4 ))'
137                         }
138                         @ferm::rule { 'dsa-postgres-backup6':
139                                 domain          => 'ip6',
140                                 description     => 'Allow postgress access',
141                                 rule            => '&SERVICE_RANGE(tcp, 5433, ( $HOST_PGBACKUPHOST_V6 ))'
142                         }
143                 }
144                 bmdb1: {
145                         @ferm::rule { 'dsa-postgres-main':
146                                 description     => 'Allow postgress access',
147                                 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 ))'
148                         }
149                         @ferm::rule { 'dsa-postgres-main6':
150                                 domain          => 'ip6',
151                                 description     => 'Allow postgress access',
152                                 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 ))'
153                         }
154                         @ferm::rule { 'dsa-postgres-dak':
155                                 description     => 'Allow postgress access',
156                                 rule            => '&SERVICE_RANGE(tcp, 5434, ( 5.153.231.11/32 5.153.231.28/32 209.87.16.26/32 5.153.231.18/32 5.153.231.29/32 128.31.0.69/32 ))'
157                         }
158                         @ferm::rule { 'dsa-postgres-dak6':
159                                 domain          => 'ip6',
160                                 description     => 'Allow postgress access',
161                                 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:18/128 2001:41c8:1000:21::21:29/128 ))'
162                         }
163                         @ferm::rule { 'dsa-postgres-wannabuild':
164                                 # wuiet, ullmann
165                                 description     => 'Allow postgress access',
166                                 rule            => '&SERVICE_RANGE(tcp, 5436, ( 5.153.231.18/32 209.87.16.38/32 ))'
167                         }
168                         @ferm::rule { 'dsa-postgres-wannabuild6':
169                                 domain          => 'ip6',
170                                 description     => 'Allow postgress access',
171                                 rule            => '&SERVICE_RANGE(tcp, 5436, ( 2001:41c8:1000:21::21:18/128 2607:f8f0:614:1::1274:38/128 ))'
172                         }
173                         @ferm::rule { 'dsa-postgres-bacula':
174                                 # dinis
175                                 description     => 'Allow postgress access1',
176                                 rule            => '&SERVICE_RANGE(tcp, 5437, ( 5.153.231.19/32 93.94.130.161/32 ))'
177                         }
178                         @ferm::rule { 'dsa-postgres-bacula6':
179                                 domain          => 'ip6',
180                                 description     => 'Allow postgress access1',
181                                 rule            => '&SERVICE_RANGE(tcp, 5437, ( 2001:41c8:1000:21::21:19/128 2a02:158:380:280::161/128 ))'
182                         }
183
184                         @ferm::rule { 'dsa-postgres-backup':
185                                 description     => 'Allow postgress access',
186                                 rule            => '&SERVICE_RANGE(tcp, (5435 5436 5440), ( $HOST_PGBACKUPHOST_V4 ))'
187                         }
188                         @ferm::rule { 'dsa-postgres-backup6':
189                                 domain          => 'ip6',
190                                 description     => 'Allow postgress access',
191                                 rule            => '&SERVICE_RANGE(tcp, (5435 5436 5440), ( $HOST_PGBACKUPHOST_V6 ))'
192                         }
193
194                         @ferm::rule { 'dsa-postgres-dedup':
195                                 # ubc, wuit
196                                 description     => 'Allow postgress access',
197                                 rule            => '&SERVICE_RANGE(tcp, (5439), ( 5.153.231.17/32 ))'
198                         }
199                         @ferm::rule { 'dsa-postgres-dedup6':
200                                 domain          => 'ip6',
201                                 description     => 'Allow postgress access',
202                                 rule            => '&SERVICE_RANGE(tcp, (5439), ( 2001:41c8:1000:21::21:17/128 ))'
203                         }
204
205                         @ferm::rule { 'dsa-postgres-debsources':
206                                 description     => 'Allow postgress access',
207                                 rule            => '&SERVICE_RANGE(tcp, (5440), ( 5.153.231.38/32 ))'
208                         }
209                         @ferm::rule { 'dsa-postgres-debsources6':
210                                 domain          => 'ip6',
211                                 description     => 'Allow postgress access',
212                                 rule            => '&SERVICE_RANGE(tcp, (5440), ( 2001:41c8:1000:21::21:38/128 ))'
213                         }
214                 }
215                 danzi: {
216                         @ferm::rule { 'dsa-postgres-danzi':
217                                 # ubc, wuiet
218                                 description     => 'Allow postgress access',
219                                 rule            => '&SERVICE_RANGE(tcp, 5433, ( 206.12.19.0/24 209.87.16.0/24 5.153.231.18/32 ))'
220                         }
221                         @ferm::rule { 'dsa-postgres-danzi6':
222                                 domain          => 'ip6',
223                                 description     => 'Allow postgress access',
224                                 rule            => '&SERVICE_RANGE(tcp, 5433, ( 2607:f8f0:610:4000::/64 2607:f8f0:614:1::/64 2001:41c8:1000:21::21:18/128 ))'
225                         }
226
227                         @ferm::rule { 'dsa-postgres2-danzi':
228                                 description     => 'Allow postgress access2',
229                                 rule            => '&SERVICE_RANGE(tcp, 5434, ( 209.87.16.0/24 ))'
230                         }
231                         @ferm::rule { 'dsa-postgres2-danzi6':
232                                 domain          => 'ip6',
233                                 description     => 'Allow postgress access2',
234                                 rule            => '&SERVICE_RANGE(tcp, 5434, ( 2607:f8f0:614:1::/64 ))'
235                         }
236                 }
237                 seger: {
238                         @ferm::rule { 'dsa-postgres-backup':
239                                 description     => 'Allow postgress access',
240                                 rule            => '&SERVICE_RANGE(tcp, 5432, ( $HOST_PGBACKUPHOST_V4 ))'
241                         }
242                         @ferm::rule { 'dsa-postgres-backup6':
243                                 domain          => 'ip6',
244                                 description     => 'Allow postgress access',
245                                 rule            => '&SERVICE_RANGE(tcp, 5432, ( $HOST_PGBACKUPHOST_V6 ))'
246                         }
247                 }
248                 sallinen: {
249                         @ferm::rule { 'dsa-postgres-backup':
250                                 description     => 'Allow postgress access',
251                                 rule            => '&SERVICE_RANGE(tcp, 5473, ( $HOST_PGBACKUPHOST_V4 ))'
252                         }
253                         @ferm::rule { 'dsa-postgres-backup6':
254                                 domain          => 'ip6',
255                                 description     => 'Allow postgress access',
256                                 rule            => '&SERVICE_RANGE(tcp, 5473, ( $HOST_PGBACKUPHOST_V6 ))'
257                         }
258                         @ferm::rule { 'dsa-postgres-replication':
259                                 description     => 'Allow postgress access',
260                                 rule            => '&SERVICE_RANGE(tcp, 5473, ( 185.17.185.187/32 ))'
261                         }
262                         @ferm::rule { 'dsa-postgres-replication6':
263                                 domain          => 'ip6',
264                                 description     => 'Allow postgress access',
265                                 rule            => '&SERVICE_RANGE(tcp, 5473, ( 2001:1af8:4020:b030:deb::187/128 ))'
266                         }
267                 }
268                 lw07: {
269                         @ferm::rule { 'dsa-postgres-snapshot':
270                                 description     => 'Allow postgress access',
271                                 rule            => '&SERVICE_RANGE(tcp, 5439, ( 185.17.185.176/28 ))'
272                         }
273                         @ferm::rule { 'dsa-postgres-snapshot6':
274                                 domain          => 'ip6',
275                                 description     => 'Allow postgress access',
276                                 rule            => '&SERVICE_RANGE(tcp, 5439, ( 2001:1af8:4020:b030::/64 ))'
277                         }
278                 }
279                 default: {}
280         }
281         # vpn fu
282         case $::hostname {
283                 draghi: {
284                         @ferm::rule { 'dsa-vpn':
285                                 description     => 'Allow openvpn access',
286                                 rule            => '&SERVICE(udp, 17257)'
287                         }
288                         @ferm::rule { 'dsa-routing':
289                                 description     => 'forward chain',
290                                 chain           => 'FORWARD',
291                                 rule            => 'policy ACCEPT;
292 mod state state (ESTABLISHED RELATED) ACCEPT;
293 interface tun+ ACCEPT;
294 REJECT reject-with icmp-admin-prohibited
295 '
296                         }
297                         @ferm::rule { 'dsa-vpn-mark':
298                                 table           => 'mangle',
299                                 chain           => 'PREROUTING',
300                                 rule            => 'interface tun+ MARK set-mark 1',
301                         }
302                         @ferm::rule { 'dsa-vpn-nat':
303                                 table           => 'nat',
304                                 chain           => 'POSTROUTING',
305                                 rule            => 'outerface !tun+ mod mark mark 1 MASQUERADE',
306                         }
307                 }
308                 ubc-enc2bl01,ubc-enc2bl02,ubc-enc2bl09,ubc-enc2bl10: {
309                         @ferm::rule { 'dsa-luca-fixme':
310                                 description     => 'Allow ssh access from mnt and vpn networks',
311                                 rule            => '&SERVICE_RANGE(tcp, 22, ( 172.29.40.0/22 172.29.203.0/24 ))',
312                         }
313                 }
314                 default: {}
315         }
316         # tftp
317         case $::hostname {
318                 abel: {
319                         @ferm::rule { 'dsa-tftp':
320                                 description     => 'Allow tftp access',
321                                 rule            => '&SERVICE_RANGE(udp, 69, ( 172.28.17.0/24 ))'
322                         }
323                 }
324                 master: {
325                         @ferm::rule { 'dsa-tftp':
326                                 description     => 'Allow tftp access',
327                                 rule            => '&SERVICE_RANGE(udp, 69, ( 82.195.75.64/26 192.168.43.0/24 ))'
328                         }
329                 }
330         }
331 }