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