manage ullmann/udd pg_hba
[mirror/dsa-puppet.git] / modules / ferm / manifests / per_host.pp
1 class ferm::per_host {
2   if (getfromhash($deprecated::nodeinfo, 'hoster', 'name') == 'aql') {
3     include ferm::aql
4   }
5
6   case $::hostname {
7     czerny,clementi: {
8       ferm::rule { 'dsa-upsmon':
9         description => 'Allow upsmon access',
10         rule        => '&SERVICE_RANGE(tcp, 3493, ( 82.195.75.64/26 192.168.43.0/24 ))'
11       }
12     }
13     kaufmann: {
14       ferm::rule { 'dsa-hkp':
15         domain      => '(ip ip6)',
16         description => 'Allow hkp access',
17         rule        => '&SERVICE(tcp, 11371)'
18       }
19     }
20     gombert: {
21       ferm::rule { 'dsa-infinoted':
22         domain      => '(ip ip6)',
23         description => 'Allow infinoted access',
24         rule        => '&SERVICE(tcp, 6523)'
25       }
26     }
27     draghi: {
28       ferm::rule { 'dsa-finger':
29         domain      => '(ip ip6)',
30         description => 'Allow finger access',
31         rule        => '&SERVICE(tcp, 79)'
32       }
33       ferm::rule { 'dsa-ldap':
34         domain      => '(ip ip6)',
35         description => 'Allow ldap access',
36         rule        => '&SERVICE(tcp, 389)'
37       }
38       ferm::rule { 'dsa-ldaps':
39         domain      => '(ip ip6)',
40         description => 'Allow ldaps access',
41         rule        => '&SERVICE(tcp, 636)'
42       }
43     }
44     default: {}
45   }
46
47   case $::hostname {
48     bm-bl1,bm-bl2: {
49       ferm::rule { 'dsa-vrrp':
50         rule => 'proto vrrp daddr 224.0.0.18 jump ACCEPT',
51       }
52       ferm::rule { 'dsa-bind-notrack-in':
53         domain      => 'ip',
54         description => 'NOTRACK for nameserver traffic',
55         table       => 'raw',
56         chain       => 'PREROUTING',
57         rule        => 'proto (tcp udp) daddr 5.153.231.24 dport 53 jump NOTRACK'
58       }
59
60       ferm::rule { 'dsa-bind-notrack-out':
61         domain      => 'ip',
62         description => 'NOTRACK for nameserver traffic',
63         table       => 'raw',
64         chain       => 'OUTPUT',
65         rule        => 'proto (tcp udp) saddr 5.153.231.24 sport 53 jump NOTRACK'
66       }
67
68       ferm::rule { 'dsa-bind-notrack-in6':
69         domain      => 'ip6',
70         description => 'NOTRACK for nameserver traffic',
71         table       => 'raw',
72         chain       => 'PREROUTING',
73         rule        => 'proto (tcp udp) daddr 2001:41c8:1000:21::21:24 dport 53 jump NOTRACK'
74       }
75
76       ferm::rule { 'dsa-bind-notrack-out6':
77         domain      => 'ip6',
78         description => 'NOTRACK for nameserver traffic',
79         table       => 'raw',
80         chain       => 'OUTPUT',
81         rule        => 'proto (tcp udp) saddr 2001:41c8:1000:21::21:24 sport 53 jump NOTRACK'
82       }
83     }
84     default: {}
85   }
86
87   # postgres stuff
88   case $::hostname {
89     bmdb1: {
90       ferm::rule { 'dsa-postgres-main':
91         description => 'Allow postgress access to cluster: main',
92         domain      => '(ip ip6)',
93         rule        => @("EOF"/$)
94           &SERVICE_RANGE(tcp, 5435, (
95             ${ join(getfromhash($deprecated::allnodeinfo, 'petrova.debian.org', 'ipHostNumber'), " ") }
96             ${ join(getfromhash($deprecated::allnodeinfo, 'ullmann.debian.org', 'ipHostNumber'), " ") }
97             ${ join(getfromhash($deprecated::allnodeinfo, 'wuiet.debian.org', 'ipHostNumber'), " ") }
98             ${ join(getfromhash($deprecated::allnodeinfo, 'quantz.debian.org', 'ipHostNumber'), " ") }
99             ${ join(getfromhash($deprecated::allnodeinfo, 'respighi.debian.org', 'ipHostNumber'), " ") }
100             ${ join(getfromhash($deprecated::allnodeinfo, 'tate.debian.org', 'ipHostNumber'), " ") }
101           ))
102           | EOF
103       }
104       ferm::rule { 'dsa-postgres-dak':
105         description => 'Allow postgress access to cluster: dak',
106         domain      => '(ip ip6)',
107         rule        => @("EOF"/$)
108           &SERVICE_RANGE(tcp, 5434, (
109             ${ join(getfromhash($deprecated::allnodeinfo, 'coccia.debian.org', 'ipHostNumber'), " ") }
110             ${ join(getfromhash($deprecated::allnodeinfo, 'quantz.debian.org', 'ipHostNumber'), " ") }
111             ${ join(getfromhash($deprecated::allnodeinfo, 'nono.debian.org', 'ipHostNumber'), " ") }
112             ${ join(getfromhash($deprecated::allnodeinfo, 'wuiet.debian.org', 'ipHostNumber'), " ") }
113             ${ join(getfromhash($deprecated::allnodeinfo, 'respighi.debian.org', 'ipHostNumber'), " ") }
114             ${ join(getfromhash($deprecated::allnodeinfo, 'usper.debian.org', 'ipHostNumber'), " ") }
115             ${ join(getfromhash($deprecated::allnodeinfo, 'ullmann.debian.org', 'ipHostNumber'), " ") }
116           ))
117           | EOF
118       }
119     }
120     default: {}
121   }
122   # vpn fu
123   case $::hostname {
124     draghi: {
125       ferm::rule { 'dsa-vpn':
126         description => 'Allow openvpn access',
127         rule        => '&SERVICE(udp, 17257)'
128       }
129       ferm::rule { 'dsa-routing':
130         description => 'forward chain',
131         chain       => 'FORWARD',
132         rule        => 'policy ACCEPT;
133 mod state state (ESTABLISHED RELATED) ACCEPT;
134 interface tun+ ACCEPT;
135 REJECT reject-with icmp-admin-prohibited
136 '
137       }
138       ferm::rule { 'dsa-vpn-mark':
139         table => 'mangle',
140         chain => 'PREROUTING',
141         rule  => 'interface tun+ MARK set-mark 1',
142       }
143       ferm::rule { 'dsa-vpn-nat':
144         table => 'nat',
145         chain => 'POSTROUTING',
146         rule  => 'outerface !tun+ mod mark mark 1 MASQUERADE',
147       }
148     }
149     ubc-enc2bl01,ubc-enc2bl02,ubc-enc2bl09,ubc-enc2bl10: {
150       ferm::rule { 'dsa-ssh-priv':
151         description => 'Allow ssh access',
152         rule        => '&SERVICE_RANGE(tcp, 22, ( 172.29.40.0/22 172.29.203.0/24 ))',
153       }
154     }
155     ubc-node-arm01,ubc-node-arm02,ubc-node-arm03: {
156       ferm::rule { 'dsa-ssh-priv':
157         description => 'Allow ssh access',
158         rule        => '&SERVICE_RANGE(tcp, 22, ( 172.29.43.240 ))',
159       }
160     }
161     default: {}
162   }
163   # tftp
164   case $::hostname {
165     abel: {
166       ferm::rule { 'dsa-tftp':
167         description => 'Allow tftp access',
168         rule        => '&SERVICE_RANGE(udp, 69, ( 172.28.17.0/24 ))'
169       }
170     }
171     master: {
172       ferm::rule { 'dsa-tftp':
173         description => 'Allow tftp access',
174         rule        => '&SERVICE_RANGE(udp, 69, ( 82.195.75.64/26 192.168.43.0/24 ))'
175       }
176     }
177   }
178 }