1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
|
Known issues with Opportunistic Encryption Claudia Schmeing
------------------------------------------
This is an overview of known issues with OE.
This document supplements:
FreeS/WAN Quickstart Guide doc/quickstart.html
Opportunism HOWTO doc/opportunism.howto
Opportunism spec doc/opportunism.spec
Internet Draft doc/draft-richardson-ipsec-opportunistic.txt
* Use the most recent Linux FreeS/WAN 2.x release from ftp.xs4all.nl
to try OE.
DESIGN LIMITATIONS
* Because Opportunistic Encryption relies on DNS:
- to authenticate one FreeS/WAN to another, and
- to prove that we have the right to protect traffic for a given IP,
this authentication/authorization is only as strong as your DNS is
secure.
Without secure DNS, OE protects against passive snooping only.
Because the public key and gateway information that FreeS/WAN gets from
DNS is not authenticated, a man-in-the-middle attack is still possible.
We hope that as DNSsec is widely adopted, OE with strong authentication
will become more widespread.
However, our software does not yet distinguish between strongly and weakly
authenticated OE. This information might be useful for defining local
security policy.
* Denial of service attacks are possible against OE. If you rely on OE rather
than VPN to connect several offices, a determined attacker could prevent you
from communicating securely.
* OE challenges the notion that all IPsec peers are "friends". With OE,
strangers can potentially tunnel IPsec packets _through_ your defenses
against cleartext packets. This may call for a re-visit to firewall policy.
* FreeS/WAN only creates OE connections when it traps an outgoing packet.
Since most traffic is two-way, for most traffic, FreeS/WAN 2.x may soon
trap an outgoing packet and create an IPsec connection to
protect both incoming and outgoing traffic. However, if a local
FreeS/WAN box accepts inbound traffic from a remote peer but
generates no outbound traffic in response, the local FreeS/WAN will not
attempt to initiate OE. Of course, the peer may also initiate OE upon
trapping its own outbound traffic.
* OE is only as reliable as your DNS is.
If your DNS service is flaky, you will not be able to reliably establish
OE connections to known OE-capable peers.
If you ping a peer, but your FreeS/WAN does not find a TXT record signifying
the peer's ability to respond to OE negotiation), FreeS/WAN will not try to
opportunistically initiate, and communication will fallback to clear.
For more secure and reliable DNS, we recommend that you run DNS
within your security perimeter, either on your security gateway, or
on a machine to which you have a VPN connection. It is also possible
to have your DNS server located elsewhere on your LAN, though this may
cause lag on startup.
This mailing list message explains how to run a local caching name server:
http://lists.freeswan.org/pipermail/design/2003-January/004205.html
See also "Getting DNS through" in opportunism.howto
http://lists.freeswan.org/pipermail/design/2002-April/002285.html .
CURRENT ISSUES
* There are several special issues re: using OE when running FreeS/WAN with
kernel native IPsec, introduced in the 2.6 kernel. Please see
doc/2.6.known-issues.
* If A and B have an OE connection, but A is rebooted, normally A will try to
re-connect to B and (if it has no DNS-related failures) it will succeed.
But, if A is set up for responder-only OE, you will have a one-way
connection until B notices that its original tunnel has expired. For details
see:
http://lists.freeswan.org/pipermail/design/2002-May/002582.html
http://lists.freeswan.org/pipermail/design/2002-June/002610.html
TIP: If an OE connection isn't behaving, you can recreate it with
ipsec whack --oppohere sourceIPaddress --oppothere targetIPaddress
* There is no good clean facility to delete OE connections.
Available are:
ipsec auto --status to list connections
ipsec whack --deletestate to delete by state#.
* You may experience seeming gaps at rekey time. Once you generate traffic,
you will find that the OE connection returns.
By default, OE connections are not rekeyed; if they were we'd have a
mountain of useless connections. As a consequence, if your OE connection is
idle at rekey time, it will go down until you generate further traffic.
To ensure prompt rekeying, you can run a ping thorough the OE tunnel.
* At the moment, you can only run active OE on one physical interface.
Active means --routed, to trap outbound packets. It is this route
that is a problem.
Untested theory: you can have multiple active OE conns, for different
source addresses, but they all have to point their traffic out the single
interface.
When responding: you can only define one OE connection (per host or subnet)
in ipsec.conf, and that conn will apply to one interface. Normally this
will be the public interface which your default route uses; it is, however,
configurable.
Theoretically, it might make sense to select between multiple OE conns
based on some criterion, such as address ranges. This might be useful for
local OE, or in a complex routing scenario.
Currently, Pluto expects only one OE connection. If you add another,
Pluto may choose randomly between them, producing unpredictable results.
* Building OE conns between nodes on a LAN is not possible.
This is a side effect of conflicts about ARP entries
in the rt_cache and our "stupid routing tricks".
There is no known workaround at this time.
"Stupid routing tricks" are an ongoing issue, and should
go away in a future software revision.
See these explanations:
http://lists.freeswan.org/pipermail/design/2002-April/002285.html
http://lists.freeswan.org/pipermail/design/2002-August/003249.html
* FreeS/WAN may not correctly follow a CNAME (Canonical Name) trail resulting
from reverse DNS delegation.
Solution: Use a recent Bind 9 (we tested with Bind snap-pre9.3) for the
DNS services which the FreeS/WAN box relies on.
Reason: This Bind correctly implements "implied helper support" for
traditional DNS records, and so can follow a properly constructed CNAME
record trail which ends in a TXT record. Thus, in cases where a reverse
domain has been delegated, FreeS/WAN + Bind 9 can find a TXT record and
create an OE connection.
For more on the problem, see "OLD ISSUES", below.
* To make OE operation smoother, we may need a script that runs and warns
if we have the reverse DNS records, but not the software running.
The reverse records advertise that we can do OE, but when the software is
not running this is false advertising.
OLD ISSUES
* Coterminal OE doesn't work in practise. This includes OE-in-WAVEsec.
Solved in 2.02.
Old diagnosis:
If you have coterminal OE connections (two OE connections which share
one endpoint), you should have use of one of the encrypted links, but it
is not clear which one KLIPS will prefer. In particular, the behaviour
may not be symmetrical.
Worse yet, it just seems to trip over itself and be generally
unworkable.
Weird but predictable:
If you have both a gateway and a host who advertise (via DNS) an
ability to do OE you need to be serious about doing host-based
OE, or you will be stuck in initiator-only mode. If your host
advertises but does not run OE, then when a peer tries to connect to
your host, it will fail to clear. The peer will then not try to encrypt
traffic bound for that host as it travels to the gateway. To remedy
the situation, restart ipsec on the peer (or otherwise flush out
the %pass eroute), and ping the peer from your host to initiate
OE.
* One-way connection was created on rekey. Solved in 2.0.
If one side (A) has a shorter _keylife_ than the other,
and that side also has _rekey=no_, then when the keylife has
expired, it will expect that its peer (B) will make a new conn to replace
the existing one. Unfortunately, B has no idea.
B continues to send out encrypted packets on the original connection,
while A passes the return packets along in the clear.
There is a proposed patch for (A) here:
http://lists.freeswan.org/pipermail/design/2002-July/003114.html
* Failure to look up own host name is a show stopper.
Solved in 1.98 and 1.98b.
Solution: new setting %dnsondemand. Usage:
leftrsasigkey=%dnsondemand # now in sample ipsec.conf
rightrsasigkey=%dnsondemand.
From man ipsec.conf:
The value %dnsondemand means the key is to fetched from DNS
at the time it is needed.
If Linux FreeS/WAN can't get the key for your public interface from
DNS, it will not keep trying, and you will not be able to do OE.
The error message is:
May 14 09:40:24 road Pluto[21210]: failure to fetch key for 193.110.157.18
from DNS: failure querying DNS for KEY of 18.157.110.193.in-addr.arpa.:
Host name lookup failure
Workaround: 1 or 2
1. Supply a key in the conn. leftrsasigkey=0s...
2. Fix the KEY lookup failure and try again.
* Assertion failure at OE rekey time. Fixed in 2.0pre0. Patch for 1.98b posted
at http://lists.freeswan.org/pipermail/design/2002-August/003347.html
* 1.91 to 1.94 have serious problems with %trap and %hold bugs. These bugs,
introduced while coding the support structure for OE, affect both OE and VPN
connections.
* OE may not work with reverse delegation (CNAMEs). This problem was once
capable of being a show stopper.
When relying on Bind versions before 9 for local DNS services, FreeS/WAN
could not follow a well constructed CNAME trail that ended in a TXT or KEY
record. Although OE required both record types, in practise we noticed the
problem with the more common TXT lookups, rather than the rarer KEY lookups.
Bind 9 largely solves the problem, by correctly seeking TXT records in
delegated reverse domains. In addition, OE between two FreeS/WAN 2.02 or
later boxes no longer relies on KEY records.
Old symptoms:
When a DNS server queried by Linux FreeS/WAN follows a CNAME,
it seems to forget what record type it is looking for, and it
returns a PTR, despite the fact that another record type was requested.
Workaround:
Send your provider KEY and TXT records for direct insertion into the
reverse ZONE files, rather than asking your provider to delegate authority
using CNAME.
People who own IP blocks, rather than leasing them, may not
experience this problem. If you were assigned IPs more than
five years ago, you may own your IPs.
|