strongSwan as a Policy Enforcement Point » History » Version 10
Andreas Steffen, 14.12.2010 21:49
1 | 1 | Andreas Steffen | h1. strongSwan as a Policy Enforcement Point |
---|---|---|---|
2 | 2 | Andreas Steffen | |
3 | 7 | Andreas Steffen | h3. Configuration as a TNCCS 1.1 VPN Policy Enforcement Point with EAP-RADIUS Interface |
4 | 4 | Andreas Steffen | |
5 | 3 | Andreas Steffen | <pre> |
6 | 3 | Andreas Steffen | ./configure --prefix=/usr --sysconfdir =/etc --disable-pluto --enable-curl |
7 | 3 | Andreas Steffen | --enable-eap-radius |
8 | 3 | Andreas Steffen | </pre> |
9 | 1 | Andreas Steffen | |
10 | 3 | Andreas Steffen | /etc/strongswan.conf - strongSwan configuration file |
11 | 3 | Andreas Steffen | |
12 | 1 | Andreas Steffen | <pre> |
13 | 3 | Andreas Steffen | charon { |
14 | 3 | Andreas Steffen | plugins { |
15 | 3 | Andreas Steffen | eap-radius { |
16 | 3 | Andreas Steffen | secret = gv6URkSs |
17 | 3 | Andreas Steffen | server = 10.1.0.10 |
18 | 3 | Andreas Steffen | filter_id = yes |
19 | 3 | Andreas Steffen | } |
20 | 3 | Andreas Steffen | } |
21 | 3 | Andreas Steffen | } |
22 | 1 | Andreas Steffen | </pre> |
23 | 3 | Andreas Steffen | |
24 | 3 | Andreas Steffen | /etc/ipsec.secrets - strongSwan IPsec secrets file |
25 | 3 | Andreas Steffen | |
26 | 3 | Andreas Steffen | <pre> |
27 | 3 | Andreas Steffen | : RSA moonKey.pem |
28 | 3 | Andreas Steffen | </pre> |
29 | 3 | Andreas Steffen | |
30 | 3 | Andreas Steffen | /etc/ipsec.conf - strongSwan IPsec configuration file |
31 | 3 | Andreas Steffen | |
32 | 3 | Andreas Steffen | <pre> |
33 | 3 | Andreas Steffen | conn rw-allow |
34 | 3 | Andreas Steffen | rightgroups=allow |
35 | 3 | Andreas Steffen | leftsubnet=10.1.0.0/28 |
36 | 3 | Andreas Steffen | also=rw-eap |
37 | 3 | Andreas Steffen | auto=add |
38 | 3 | Andreas Steffen | |
39 | 3 | Andreas Steffen | conn rw-isolate |
40 | 3 | Andreas Steffen | rightgroups=isolate |
41 | 3 | Andreas Steffen | leftsubnet=10.1.0.16/28 |
42 | 3 | Andreas Steffen | also=rw-eap |
43 | 3 | Andreas Steffen | auto=add |
44 | 3 | Andreas Steffen | |
45 | 3 | Andreas Steffen | conn rw-eap |
46 | 3 | Andreas Steffen | leftcert=moonCert.pem |
47 | 3 | Andreas Steffen | leftid=@moon.strongswan.org |
48 | 3 | Andreas Steffen | leftauth=pubkey |
49 | 3 | Andreas Steffen | rightauth=eap-radius |
50 | 3 | Andreas Steffen | rightid=*@strongswan.org |
51 | 3 | Andreas Steffen | rightsendcert=never |
52 | 3 | Andreas Steffen | right=%any |
53 | 3 | Andreas Steffen | </pre> |
54 | 1 | Andreas Steffen | |
55 | 1 | Andreas Steffen | "PEP logfile":http://www.strongswan.org/uml/testresults/ikev2/rw-eap-tnc-radius/moon.daemon.log |
56 | 7 | Andreas Steffen | |
57 | 7 | Andreas Steffen | h3. Configuration of a FreeRADIUS Server with TNC@FHH plugin |
58 | 7 | Andreas Steffen | |
59 | 8 | Andreas Steffen | First build a "TNC@FHH":http://trust.inform.fh-hannover.de/joomla/index.php/projects/tncfhh Server based on FreeRADIUS with two inner authentication methods according to the following "HOWTO":http://trust.inform.fh-hannover.de/wiki/index.php/Howto_build_a_tnc%40fhh-Server_with_two_inner_authentication_methods. |
60 | 9 | Andreas Steffen | |
61 | 9 | Andreas Steffen | In order to interoperate with a strongSwan VPN Policy Enforcement Point the following FreeRADIUS configuration files are needed: |
62 | 9 | Andreas Steffen | |
63 | 9 | Andreas Steffen | /etc/raddb/clients.conf |
64 | 9 | Andreas Steffen | |
65 | 9 | Andreas Steffen | <pre> |
66 | 9 | Andreas Steffen | client 10.1.0.1 { |
67 | 9 | Andreas Steffen | secret = gv6URkSs |
68 | 9 | Andreas Steffen | shortname = moon |
69 | 9 | Andreas Steffen | } |
70 | 9 | Andreas Steffen | </pre> |
71 | 9 | Andreas Steffen | |
72 | 9 | Andreas Steffen | /etc/raddb/eap.conf |
73 | 9 | Andreas Steffen | |
74 | 9 | Andreas Steffen | <pre> |
75 | 9 | Andreas Steffen | eap { |
76 | 9 | Andreas Steffen | md5 { |
77 | 9 | Andreas Steffen | } |
78 | 9 | Andreas Steffen | default_eap_type = ttls |
79 | 9 | Andreas Steffen | tls { |
80 | 9 | Andreas Steffen | private_key_file = /etc/raddb/certs/aaaKey.pem |
81 | 9 | Andreas Steffen | certificate_file = /etc/raddb/certs/aaaCert.pem |
82 | 9 | Andreas Steffen | CA_file = /etc/raddb/certs/strongswanCert.pem |
83 | 9 | Andreas Steffen | cipher_list = "DEFAULT" |
84 | 9 | Andreas Steffen | dh_file = /etc/raddb/certs/dh |
85 | 9 | Andreas Steffen | random_file = /etc/raddb/certs/random |
86 | 9 | Andreas Steffen | } |
87 | 9 | Andreas Steffen | ttls { |
88 | 9 | Andreas Steffen | default_eap_type = md5 |
89 | 9 | Andreas Steffen | use_tunneled_reply = yes |
90 | 9 | Andreas Steffen | virtual_server = "inner-tunnel" |
91 | 9 | Andreas Steffen | tnc_virtual_server = "inner-tunnel-second" |
92 | 9 | Andreas Steffen | } |
93 | 9 | Andreas Steffen | } |
94 | 9 | Andreas Steffen | |
95 | 9 | Andreas Steffen | eap eap_tnc { |
96 | 9 | Andreas Steffen | default_eap_type = tnc |
97 | 9 | Andreas Steffen | tnc { |
98 | 9 | Andreas Steffen | } |
99 | 9 | Andreas Steffen | } |
100 | 9 | Andreas Steffen | </pre> |
101 | 9 | Andreas Steffen | |
102 | 9 | Andreas Steffen | /etc/raddb/proxy.conf |
103 | 9 | Andreas Steffen | |
104 | 9 | Andreas Steffen | <pre> |
105 | 9 | Andreas Steffen | realm strongswan.org { |
106 | 9 | Andreas Steffen | type = radius |
107 | 9 | Andreas Steffen | authhost = LOCAL |
108 | 9 | Andreas Steffen | accthost = LOCAL |
109 | 9 | Andreas Steffen | } |
110 | 9 | Andreas Steffen | </pre> |
111 | 9 | Andreas Steffen | |
112 | 9 | Andreas Steffen | /etc/raddb/users |
113 | 9 | Andreas Steffen | |
114 | 9 | Andreas Steffen | <pre> |
115 | 10 | Andreas Steffen | carol Cleartext-Password := "Ar3etTnp" |
116 | 10 | Andreas Steffen | dave Cleartext-Password := "W7R0g3do" |
117 | 10 | Andreas Steffen | </pre> |
118 | 10 | Andreas Steffen | |
119 | 10 | Andreas Steffen | /etc/raddb/sites-available/default |
120 | 10 | Andreas Steffen | |
121 | 10 | Andreas Steffen | <pre> |
122 | 10 | Andreas Steffen | authorize { |
123 | 10 | Andreas Steffen | suffix |
124 | 10 | Andreas Steffen | eap { |
125 | 10 | Andreas Steffen | ok = return |
126 | 10 | Andreas Steffen | } |
127 | 10 | Andreas Steffen | files |
128 | 10 | Andreas Steffen | } |
129 | 10 | Andreas Steffen | |
130 | 10 | Andreas Steffen | authenticate { |
131 | 10 | Andreas Steffen | eap |
132 | 10 | Andreas Steffen | } |
133 | 10 | Andreas Steffen | |
134 | 10 | Andreas Steffen | preacct { |
135 | 10 | Andreas Steffen | preprocess |
136 | 10 | Andreas Steffen | acct_unique |
137 | 10 | Andreas Steffen | suffix |
138 | 10 | Andreas Steffen | files |
139 | 10 | Andreas Steffen | } |
140 | 10 | Andreas Steffen | |
141 | 10 | Andreas Steffen | accounting { |
142 | 10 | Andreas Steffen | detail |
143 | 10 | Andreas Steffen | unix |
144 | 10 | Andreas Steffen | radutmp |
145 | 10 | Andreas Steffen | attr_filter.accounting_response |
146 | 10 | Andreas Steffen | } |
147 | 10 | Andreas Steffen | |
148 | 10 | Andreas Steffen | session { |
149 | 10 | Andreas Steffen | radutmp |
150 | 10 | Andreas Steffen | } |
151 | 10 | Andreas Steffen | |
152 | 10 | Andreas Steffen | post-auth { |
153 | 10 | Andreas Steffen | exec |
154 | 10 | Andreas Steffen | Post-Auth-Type REJECT { |
155 | 10 | Andreas Steffen | attr_filter.access_reject |
156 | 10 | Andreas Steffen | } |
157 | 10 | Andreas Steffen | } |
158 | 10 | Andreas Steffen | |
159 | 10 | Andreas Steffen | pre-proxy { |
160 | 10 | Andreas Steffen | } |
161 | 10 | Andreas Steffen | |
162 | 10 | Andreas Steffen | post-proxy { |
163 | 10 | Andreas Steffen | eap |
164 | 10 | Andreas Steffen | } |
165 | 10 | Andreas Steffen | </pre> |
166 | 10 | Andreas Steffen | |
167 | 10 | Andreas Steffen | /etc/raddb/sites-available/inner-tunnel |
168 | 10 | Andreas Steffen | |
169 | 10 | Andreas Steffen | <pre> |
170 | 10 | Andreas Steffen | server inner-tunnel { |
171 | 10 | Andreas Steffen | |
172 | 10 | Andreas Steffen | authorize { |
173 | 10 | Andreas Steffen | suffix |
174 | 10 | Andreas Steffen | eap { |
175 | 10 | Andreas Steffen | ok = return |
176 | 10 | Andreas Steffen | } |
177 | 10 | Andreas Steffen | files |
178 | 10 | Andreas Steffen | } |
179 | 10 | Andreas Steffen | |
180 | 10 | Andreas Steffen | authenticate { |
181 | 10 | Andreas Steffen | eap |
182 | 10 | Andreas Steffen | } |
183 | 10 | Andreas Steffen | |
184 | 10 | Andreas Steffen | session { |
185 | 10 | Andreas Steffen | radutmp |
186 | 10 | Andreas Steffen | } |
187 | 10 | Andreas Steffen | |
188 | 10 | Andreas Steffen | post-auth { |
189 | 10 | Andreas Steffen | Post-Auth-Type REJECT { |
190 | 10 | Andreas Steffen | attr_filter.access_reject |
191 | 10 | Andreas Steffen | } |
192 | 10 | Andreas Steffen | } |
193 | 10 | Andreas Steffen | |
194 | 10 | Andreas Steffen | pre-proxy { |
195 | 10 | Andreas Steffen | } |
196 | 10 | Andreas Steffen | |
197 | 10 | Andreas Steffen | post-proxy { |
198 | 10 | Andreas Steffen | eap |
199 | 10 | Andreas Steffen | } |
200 | 10 | Andreas Steffen | |
201 | 10 | Andreas Steffen | } # inner-tunnel server block |
202 | 10 | Andreas Steffen | |
203 | 10 | Andreas Steffen | </pre> |
204 | 10 | Andreas Steffen | |
205 | 10 | Andreas Steffen | /etc/raddb/sites-available/inner-tunnel-second |
206 | 10 | Andreas Steffen | |
207 | 10 | Andreas Steffen | <pre> |
208 | 10 | Andreas Steffen | server inner-tunnel-second { |
209 | 10 | Andreas Steffen | |
210 | 10 | Andreas Steffen | authorize { |
211 | 10 | Andreas Steffen | eap_tnc { |
212 | 10 | Andreas Steffen | ok = return |
213 | 10 | Andreas Steffen | } |
214 | 10 | Andreas Steffen | } |
215 | 10 | Andreas Steffen | |
216 | 10 | Andreas Steffen | authenticate { |
217 | 10 | Andreas Steffen | eap_tnc |
218 | 10 | Andreas Steffen | } |
219 | 10 | Andreas Steffen | |
220 | 10 | Andreas Steffen | session { |
221 | 10 | Andreas Steffen | radutmp |
222 | 10 | Andreas Steffen | } |
223 | 10 | Andreas Steffen | |
224 | 10 | Andreas Steffen | post-auth { |
225 | 10 | Andreas Steffen | if (control:TNC-Status == "Access") { |
226 | 10 | Andreas Steffen | update reply { |
227 | 10 | Andreas Steffen | Tunnel-Type := ESP |
228 | 10 | Andreas Steffen | Filter-Id := "allow" |
229 | 10 | Andreas Steffen | } |
230 | 10 | Andreas Steffen | } |
231 | 10 | Andreas Steffen | elsif (control:TNC-Status == "Isolate") { |
232 | 10 | Andreas Steffen | update reply { |
233 | 10 | Andreas Steffen | Tunnel-Type := ESP |
234 | 10 | Andreas Steffen | Filter-Id := "isolate" |
235 | 10 | Andreas Steffen | } |
236 | 10 | Andreas Steffen | } |
237 | 10 | Andreas Steffen | |
238 | 10 | Andreas Steffen | Post-Auth-Type REJECT { |
239 | 10 | Andreas Steffen | attr_filter.access_reject |
240 | 10 | Andreas Steffen | } |
241 | 10 | Andreas Steffen | } |
242 | 10 | Andreas Steffen | |
243 | 10 | Andreas Steffen | } # inner-tunnel-second block |
244 | 9 | Andreas Steffen | </pre> |