chiark / gitweb /
Import release 0.1.16
[secnet.git] / NEWS
1 * Planned for the future
2
3 Please note that the 0.1 series of secnet releases is now 'maintenance
4 only'; further development continues in secnet-0.2.
5
6 * Planned for version 0.1.17
7
8 Debconf support - if you are using the Debian packaged version and
9 your secnet configuration is autogenerated using debconf then the
10 upgrade to version 0.2.0 should just involve installing the package;
11 an appropriate 0.2-style configuration file will be generated
12 automatically.
13
14 * New in version 0.1.16
15
16 XXX XXX PROTOCOL COMPATIBILITY IS BROKEN BETWEEN VERSION 0.1.16 AND
17 XXX XXX ALL PREVIOUS VERSIONS.
18
19 Bugfix: rsa.c private-key now works properly when you choose not to
20 verify it.
21
22 Bugfix: serpent key setup was only using the first 8 bytes of the key
23 material. (Oops!)  Ian Jackson contributed a fix so the full 32 bytes
24 are used, in big-endian mode.
25
26 Debatable-bugfix: RSA operations now use PKCS1 v1.5-style padding
27
28 "Hacky parallelism" contributed by Ian Jackson; this permits
29 public-key operations to be performed in a subprocess during key
30 exchange, to make secnet more usable on very slow machines.  This is
31 not compiled in by default; if you find you need it (because key
32 exchanges are taking more than a second or two) then add
33 -DHACKY_PARALLEL to FLAGS in the Makefile.in and recompile.
34
35 udp module updates from Peter Benie:
36   1) Handle the case where authbind-helper terminates with a signal
37   2) Cope with signals being delivered during waitpid
38   3) Add 'address' (optional) to the udp settings. This is an IP address
39      that the socket will be bound to.
40   4) Change the endianess of the arguments to authbind-helper.
41      sprintf("%04X") already translates from machine repesentation to most
42      significant octet first so htons reversed it again.
43
44 All uses of alloca() expunged by Peter Benie.
45
46 make-secnet-sites now supports configurations where each tunnel gets
47 its own interface on the host, and the IP router code in secnet is
48 disabled.  make-secnet-sites has been rewritten for clarity.  For
49 information on how to configure secnet for one-interface-per-tunnel,
50 see the example.conf file.
51
52 * New in version 0.1.15
53
54 Now terminates with an error when an "include" filename is not
55 specified in the configuration file (thanks to RJK).
56
57 RSA private key operations optimised using CRT. Thanks to SGT.
58
59 Now compiles cleanly with -Wwrite-strings turned on in gcc.
60
61 Anything sent to stderr once secnet has started running in the
62 background is now redirected to the system/log facility.
63
64 * New in version 0.1.14
65
66 The --help and --version options now send their output to stdout.
67
68 Bugfix: TUN flavour "BSD" no longer implies a BSD-style ifconfig and
69 route command invocation.  Instead "ioctl"-style is used, which should
70 work on both BSD and linux-2.2 systems.
71
72 If no "networks" parameter is specified for a netlink device then it
73 is assumed to be 0.0.0.0/0 rather than the empty set.  So, by default
74 there is a default route from each netlink device to the host machine.
75 The "networks" parameter can be used to implement a primitive
76 firewall, restricting the destination addresses of packets received
77 through tunnels; if a more complex firewall is required then implement
78 it on the host.
79
80 * New in version 0.1.13
81
82 site.c code cleaned up; no externally visible changes
83
84 secnet now calls setsid() after becoming a daemon.
85
86 secnet now supports TUN on Solaris 2.5 and above (and possibly other
87 STREAMS-based systems as well).
88
89 The TUN code now tries to auto-detect the type of "TUN" in use
90 (BSD-style, Linux-style or STREAMS-style).  If your configuration file
91 specifies "tun-old" then it defaults to BSD-style; however, since
92 "tun-old" will be removed in a future release, you should change your
93 configuration file to specify "tun" and if there's a problem also
94 specify the flavour in use.
95
96 Example:
97 netlink tun-old {
98         ...
99 };
100 should be rewritten as
101 netlink tun {
102         flavour "bsd";
103         ...
104 };
105
106 The flavours currently defined are "bsd", "linux" and "streams".
107
108 The TUN code can now be configured to configure interfaces and
109 add/delete routes using one of several methods: invoking a
110 "linux"-style ifconfig/route command, a "bsd"-style ifconfig/route
111 command, "solaris-2.5"-style ifconfig/route command or calling ioctl()
112 directly.  These methods can be selected using the "ifconfig-type" and
113 "route-type" options.
114
115 Example:
116 netlink tun {
117         ifconfig-type "ioctl";
118         route-type "ioctl";
119         ...
120 };
121
122 The ioctl-based method is now the default for Linux systems.
123
124 Magic numbers used within secnet are now collected in the header file
125 "magic.h".
126
127 netlink now uses ICMP type=0 code=13 for 'administratively prohibited'
128 instead of code 9. See RFC1812 section 5.2.7.1.
129
130 The UDP comm module now supports a proxy server, "udpforward".  This
131 runs on a machine which is directly accessible by secnet and which can
132 send packets to appropriate destinations.  It's useful when the proxy
133 machine doesn't support source- and destination-NAT.  The proxy server
134 is specified using the "proxy" key in the UDP module configuration;
135 parameters are IP address (string) and port number.
136
137 Bugfix: ipset_to_subnet_list() in ipaddr.c now believed to work in all
138 cases, including 0.0.0.0/0
139
140 * New in version 0.1.12
141
142 IMPORTANT: fix calculation of 'now' in secnet.c; necessary for correct
143 operation.
144
145 (Only interesting for people building and modifying secnet by hand:
146 the Makefile now works out most dependencies automatically.)
147
148 The netlink code no longer produces an internal routing table sorted
149 by netmask length.  Instead, netlink instances have a 'priority'; the
150 table of routes is sorted by priority.  Devices like laptops that have
151 tunnels that must sometimes 'mask' parts of other tunnels should be
152 given higher priorities.  If a priority is not specified it is assumed
153 to be zero.
154
155 Example usage:
156 site laptop { ...
157         link netlink {
158                 route "192.168.73.74/31";
159                 priority 10;
160         };
161 };
162
163 * New in version 0.1.11
164
165 Lists of IP addresses in the configuration file can now include
166 exclusions as well as inclusions.  For example, you can specify all
167 the hosts on a subnet except one as follows:
168
169 networks "192.168.73.0/24","!192.168.73.70";
170
171 (If you were only allowed inclusions, you'd have to specify that like
172 this:
173 networks "192.168.73.71/32","192.168.73.68/31","192.168.73.64/30",
174         "192.168.73.72/29","192.168.73.80/28","192.168.73.96/27",
175         "192.168.73.0/26","192.168.73.128/25";
176 )
177
178 secnet now ensures that it invokes userv-ipif with a non-overlapping
179 list of subnets.
180
181 There is a new command-line option, --sites-key or -s, that enables
182 the configuration file key that's checked to determine the list of
183 active sites (default "sites") to be changed.  This enables a single
184 configuration file to contain multiple cofigurations conveniently.
185
186 NAKs are now sent when packets arrive that are not understood.  The
187 tunnel code initiates a key setup if it sees a NAK.  Future
188 developments should include configuration options that control this.
189
190 The tunnel code notifies its peer when secnet is terminating, so the
191 peer can close the session.
192
193 The netlink "exclude-remote-networks" option has now been replaced by
194 a "remote-networks" option; instead of specifying networks that no
195 site may access, you specify the set of networks that remote sites are
196 allowed to access. A sensible example: "192.168.0.0/16",
197 "172.16.0.0/12", "10.0.0.0/8", "!your-local-network"
198
199 * New in version 0.1.10
200
201 WARNING: THIS VERSION MAKES A CHANGE TO THE CONFIGURATION FILE FORMAT
202 THAT IS NOT BACKWARD COMPATIBLE.  However, in most configurations the
203 change only affects the sites.conf file, which is generated by the
204 make-secnet-sites script; after you regenerate your sites.conf using
205 version 0.1.10, everything should continue to work.
206
207 Netlink devices now interact slightly differently with the 'site'
208 code.  When you invoke a netlink closure like 'tun' or 'userv-ipif',
209 you get another closure back.  You then invoke this closure (usually
210 in the site definitions) to specify things like routes and options.
211 The result of this invocation should be used as the 'link' option in
212 site configurations.
213
214 All this really means is that instead of site configurations looking
215 like this:
216
217 foo {
218         name "foo";
219         networks "a", "b", "c";
220         etc.
221 };
222
223 ...they look like this:
224
225 foo {
226         name "foo";
227         link netlink { routes "a", "b", "c"; };
228         etc.
229 };
230
231 This change was made to enable the 'site' code to be completely free
232 of any knowledge of the contents of the packets it transmits.  It
233 should now be possible in the future to tunnel other protocols like
234 IPv6, IPX, raw Ethernet frames, etc. without changing the 'site' code
235 at all.
236
237 Point-to-point netlink devices work slightly differently; when you
238 apply the 'tun', 'userv-ipif', etc. closure and specify the
239 ptp-address option, you must also specify the 'routes' option.  The
240 result of this invocation should be passed directly to the 'link'
241 option of the site configuration.  You can do things like this:
242
243 sites site {
244         name "foo";
245         link tun {
246                 networks "192.168.73.76/32";
247                 local-address "192.168.73.76"; # IP address of interface
248                 ptp-address "192.168.73.75"; # IP address of other end of link
249                 routes "192.168.73.74/32";
250                 mtu 1400;
251                 buffer sysbuffer();
252         };
253         etc.
254 };
255
256 The route dump obtained by sending SIGUSR1 to secnet now includes
257 packet counts.
258
259 Point-to-point mode has now been tested.
260
261 tun-old has now been tested, and the annoying 'untested' message has
262 been removed.  Thanks to SGT and JDA.
263
264 secnet now closes its stdin, stdout and stderr just after
265 backgrounding.
266
267 Bugfix: specifying network "0.0.0.0/0" (or "default") now works
268 correctly.
269                 
270 * New in version 0.1.9
271
272 The netlink code may now generate ICMP responses to ICMP messages that
273 are not errors, eg. ICMP echo-request.  This makes Windows NT
274 traceroute output look a little less strange.
275
276 configure.in and config.h.bot now define uint32_t etc. even on systems
277 without stdint.h and inttypes.h (needed for Solaris 2.5.1)
278
279 GNU getopt is included for systems that lack it.
280
281 We check for LOG_AUTHPRIV before trying to use it in log.c (Solaris
282 2.5.1 doesn't have it.)
283
284 Portable snprintf.c from http://www.ijs.si/software/snprintf/ is
285 included for systems that lack snprintf/vsnprintf.
286
287 make-secnet-sites.py renamed to make-secnet-sites and now installed in
288 $prefix/sbin/make-secnet-sites; ipaddr.py library installed in
289 $prefix/share/secnet/ipaddr.py.  make-secnet-sites searches
290 /usr/local/share/secnet and /usr/share/secnet for ipaddr.py
291
292 * New in version 0.1.8
293
294 Netlink devices now support a 'point-to-point' mode.  In this mode the
295 netlink device does not require an IP address; instead, the IP address
296 of the other end of the tunnel is specified using the 'ptp-address'
297 option.  Precisely one site must be configured to use the netlink
298 device. (I haven't had a chance to test this because 0.1.8 turned into
299 a 'quick' release to enable secnet to cope with the network problems
300 affecting connections going via LINX on 2001-10-16.)
301
302 The tunnel code in site.c now initiates a key setup if the
303 reverse-transform function fails (wrong key, bad MAC, too much skew,
304 etc.) - this should make secnet more reliable on dodgy links, which
305 are much more common than links with active attackers...  (an attacker
306 can now force a new key setup by replaying an old packet, but apart
307 from minor denial of service on slow links or machines this won't
308 achieve them much).  This should eventually be made configurable.
309
310 The sequence number skew detection code in transform.c now only
311 complains about 'reverse skew' - replays of packets that are too
312 old. 'Forward skew' (gaps in the sequence numbers of received packets)
313 is now tolerated silently, to cope with large amounts of packet loss.