IPSEC.CONF
Section: File Formats (5)
Updated: 30 Jan 2000
Index Return
to Main Contents
NAME
ipsec.conf - IPSEC configuration and connections
DESCRIPTION
The ipsec.conf file specifies most configuration and control information
for the FreeS/WAN IPSEC subsystem. (The major exception is secrets for
authentication; see ipsec.secrets(5).)
Its contents are not security-sensitive unless manual keying is being
done for more than just testing, in which case the encryption/authentication
keys in the descriptions for the manually-keyed connections are very sensitive
(and those connection descriptions are probably best kept in a separate file,
via the include facility described below).
The file is a text file, consisting of one or more sections. White
space followed by # followed by anything to the end of the line is a
comment and is ignored, as are empty lines which are not within a section.
A line which contains include and a file name, separated by white
space, is replaced by the contents of that file, preceded and followed by empty
lines. If the file name is not a full pathname, it is considered to be relative
to the directory containing the including file. Such inclusions can be nested.
Only a single filename may be supplied, and it may not contain white space, but
it may include shell wildcards (see sh(1)); for
example:
include ipsec.*.conf
The intention of the include facility is mostly to permit keeping information
on connections, or sets of connections, separate from the main configuration
file. This permits such connection descriptions to be changed, copied to the
other security gateways involved, etc., without having to constantly extract
them from the configuration file and then insert them back into it. Note also
the also parameter (described below) which permits splitting a single
logical section (e.g. a connection description) into several actual sections.
A section begins with a line of the form:
type name
where type indicates what type of section follows, and name is
an arbitrary name which distinguishes the section from others of the same type.
(Names must start with a letter and may contain only letters, digits, periods,
underscores, and hyphens.) All subsequent lines which begin with white space are
part of the section; comments within a section must begin with white space too.
There may be only one section of a given type with a given name.
Lines within the section are generally of the form
parameter=value
(note the mandatory preceding white space). There can be white space on
either side of the =. The parameter names are specific to a section type.
Unless otherwise explicitly specified, no parameter may appear more than once in
a section.
An empty value stands for the default value (if any) of the parameter,
i.e. it is roughly equivalent to omitting the parameter line entirely. A value
may contain white space only if the entire value is enclosed in double
quotes ("); a value cannot itself contain a double quote, nor
may it be continued across more than one line.
Numeric values are specified to be either an ``integer'' (a sequence of
digits) or a ``decimal number'' (sequence of digits optionally followed by `.'
and another sequence of digits).
There is currently one parameter which is available in any type of section:
- also
- the value is a section name; the parameters of that section are appended
to this section, as if they had been written as part of it. The specified
section must exist, must follow the current one, and must have the same
section type. (Nesting is permitted, and there may be more than one also
in a single section, although it is forbidden to append the same section
more than once.) This allows, for example, keeping the encryption keys for a
connection in a separate file from the rest of the description, by using
both an also parameter and an include line. (Caution, see BUGS
below for some restrictions.)
Parameter names beginning with x- (or X-) are reserved for user
extensions and will never be assigned meanings by IPSEC. Parameters with such
names must still observe the syntax rules (name beginning with a letter and
containing only letters, digits, underscores, and hyphens; value either
containing no white space or enclosed in double quotes; no newlines or double
quotes within the value). All other as-yet-unused parameter names are reserved
for future IPSEC improvements.
A section with name %default specifies defaults for sections of the
same type. For each parameter in it, any section of that type which does not
have a parameter of the same name gets a copy of the one from the %default
section. There may be multiple %default sections of a given type, but
only one default may be supplied for any specific parameter name, and all %default
sections of a given type must precede all non-%default sections of that
type. %default sections may not contain also parameters.
Currently there are two types of section: a config section specifies
general configuration information for IPSEC, while a conn section
specifies an IPSEC connection.
CONN SECTIONS
A conn section contains a connection specification, defining a
network connection to be made using IPSEC. The name given is arbitrary, and is
used to identify the connection to ipsec_auto(8)
and ipsec_manual(8). Here's a simple
example:
conn snt
left=10.11.11.1
leftsubnet=10.0.1.0/24
leftnexthop=33.44.55.66
right=10.22.22.1
rightsubnet=10.0.2.0/24
rightnexthop=99.88.77.66
keyingtries=0 # be very persistent
To avoid trivial editing of the configuration file to suit it to each system
involved in a connection, connection specifications are written in terms of left
and right participants, rather than in terms of local and remote. Which
participant is considered left or right is arbitrary; IPSEC
figures out which one it is being run on based on internal information. This
permits using identical connection specifications on both systems.
Many of the parameters relate to one participant or the other; only the ones
for left are listed here, but every parameter whose name begins with left
has a right counterpart, whose description is the same but with left
and right reversed.
Parameters are optional unless marked ``(required)''; a parameter required
for manual keying need not be included for a connection which will use only
automatic keying, and vice versa.
CONN PARAMETERS: GENERAL
The following parameters are relevant to both automatic and manual keying.
- type
- the type of the connection; currently the accepted values are tunnel
(the default) signifying a host-to-host, host-to-subnet, or subnet-to-subnet
tunnel; transport, signifying host-to-host transport mode; and passthrough
(supported only for manual keying), signifying that no IPSEC processing
should be done at all
- auto
- what operation, if any, should be done automatically at IPSEC startup;
currently-accepted values are add (signifying an ipsec_auto add),
start (signifying an ipsec_auto start), and ignore
(also the default) (signifying no automatic startup operation). This
parameter is ignored unless the plutoload or plutostart
configuration parameter is set suitably; see the config setup
discussion below.
- left
- (required) the IP address of the left participant's public-network
interface, in any form accepted by ipsec_atoaddr(3).
If it is the magic value %defaultroute, and interfaces=%defaultroute
is used in the config setup section, left will be
filled in automatically with the local address of the default-route
interface (as determined at IPSEC startup time); this also overrides any
value supplied for leftnexthop. (Either left or right
may be %defaultroute, but not both.)
- leftsubnet
- private subnet behind the left participant, expressed as network/netmask;
if omitted, essentially assumed to be left/32, signifying that
the left end of the connection goes to the left participant only
- leftnexthop
- next-hop gateway IP address for the left participant's connection to the
public network; defaults to right. If the value is to be overridden
by the left=%defaultroute method (see above), an explicit value must not
be given. If that method is not being used, but leftnexthop is %defaultroute,
and interfaces=%defaultroute is used in the config setup
section, the next-hop gateway address of the default-route interface will be
used.
- leftupdown
- what ``updown'' script to run to adjust routing and/or firewalling when
the status of the connection changes (default ipsec _updown). May
include positional parameters separated by white space (although this
requires enclosing the whole string in quotes); including shell
metacharacters is unwise. See ipsec_pluto(8)
for details.
- leftfirewall
- whether the left participant is doing forwarding-firewalling (including
masquerading) for traffic from leftsubnet, which should be turned off
(for traffic to the other subnet) once the connection is established;
acceptable values are yes and (the default) no. May not be
used in the same connection description with leftupdown. Implemented
as a parameter to the default updown script.
If one or both security gateways are doing forwarding firewalling (possibly
including masquerading), and this is specified using the firewall parameters,
tunnels established with IPSEC are exempted from it so that packets can flow
unchanged through the tunnels. (This means that all subnets connected in this
manner must have distinct, non-overlapping subnet address blocks.) This is done
by the default updown script (see ipsec_pluto(8)).
The implementation of this makes certain assumptions about firewall setup,
notably the use of the old ipfwadm interface to the firewall. In
situations calling for more control, it may be preferable for the user to supply
his own updown script, which makes the appropriate adjustments for his
system.
CONN PARAMETERS: AUTOMATIC KEYING
The following parameters are relevant only to automatic keying, and are ignored
in manual keying.
- keyexchange
- method of key exchange; the default and currently the only accepted value
is ike
- auth
- whether authentication should be done as part of ESP encryption, or
separately using the AH protocol; acceptable values are esp (the
default) and ah.
- authby
- how the two security gateways should authenticate each other; acceptable
values are secret for shared secrets (the default) and rsasig
for RSA digital signatures
- leftid
- how the left participant should be identified for authentication; defaults
to left. Can be an IP address (in any ipsec_atoaddr(3)
syntax) or a fully-qualified domain name preceded by @ (which is used
as a literal string and not resolved).
- leftrsasigkey
- the left participant's public key for RSA signature authentication, in RFC
2537 format using ipsec_atobytes(3)
encoding. Caution: if two connection descriptions specify different
public keys for the same leftid, confusion and madness will ensue.
- pfs
- whether Perfect Forward Secrecy is desired on the connection (with PFS,
later compromise of secret information cannot lead to retroactive compromise
of the security of the connection); acceptable values are yes (the
default) and no
- keylife
- how long a particular set of SAs (and hence keys) should be used, from
successful negotiation to expiry; acceptable values are an integer
optionally followed by s (a time in seconds) or a decimal number
followed by m, h, or d (a time in minutes, hours, or
days respectively) (default 8.0h, maximum 24h).
- rekeymargin
- how long before SA (and key) expiry should attempts to negotiate
replacements begin; acceptable values as for keylife (default 9m)
- rekeyfuzz
- maximum percentage by which rekeymargin should be randomly
increased to randomize rekeying intervals (important for hosts with many
connections); acceptable values are an integer, which may exceed 100,
followed by a `%' (default set by ipsec_pluto(8),
currently 100%). The value of rekeymargin, after this random
increase, must not exceed keylife. The value 0% will suppress
time randomization.
- keyingtries
- how many attempts (an integer) should be made to negotiate a connection,
or a replacement for one, before giving up (default 3); the value 0
means ``never give up''
- ikelifetime
- how long the connection to the other key-management daemon should last
before being renegotiated; acceptable values as for keylife (default
set by ipsec_pluto(8), currently 1h,
maximum 8h).
CONN PARAMETERS: MANUAL KEYING
The following parameters are relevant only to manual keying, and are ignored in
automatic keying. A manually-keyed connection must specify at least one of AH or
ESP.
- spi
- (this or spibase required for manual keying) the SPI number to be
used for the connection (see ipsec_manual(8));
must be of the form 0xhex, where hex is one or more
hexadecimal digits (note, it will generally be necessary to make spi
at least 0x100 to be acceptable to KLIPS)
- spibase
- (this or spi required for manual keying) the base number for the
SPIs to be used for the connection (see ipsec_manual(8));
must be of the form 0xhex0, where hex is one or
more hexadecimal digits (note, it will generally be necessary to make spibase
at least 0x100 for the resulting SPIs to be acceptable to KLIPS)
- esp
- ESP encryption/authentication algorithm to be used for the connection,
e.g. 3des-md5-96 (must be suitable as a value of ipsec_spi(8)'s
--esp option); default is not to use ESP
- espenckey
- ESP encryption key (must be suitable as a value of ipsec_spi(8)'s
--enckey option) (may be specified separately for each direction
using leftespenckey (leftward SA) and rightespenckey
parameters)
- espauthkey
- ESP authentication key (must be suitable as a value of ipsec_spi(8)'s
--authkey option) (may be specified separately for each direction
using leftespauthkey (leftward SA) and rightespauthkey
parameters)
- espreplay_window
- ESP replay-window setting, an integer from 0 (the ipsec_manual
default, which turns off replay protection) to 64; relevant only if
ESP authentication is being used
- leftespspi
- SPI to be used for the leftward ESP SA, overriding automatic assignment
using spi or spibase; typically a hexadecimal number beginning
with 0x
- ah
- AH authentication algorithm to be used for the connection, e.g. hmac-md5-96
(must be suitable as a value of ipsec_spi(8)'s
--ah option); default is not to use AH
- ahkey
- (required if ah is present) AH authentication key (must be suitable
as a value of ipsec_spi(8)'s --authkey
option) (may be specified separately for each direction using leftahkey
(leftward SA) and rightahkey parameters)
- ahreplay_window
- AH replay-window setting, an integer from 0 (the ipsec_manual
default, which turns off replay protection) to 64
- leftahspi
- SPI to be used for the leftward AH SA, overriding automatic assignment
using spi or spibase; typically a hexadecimal number beginning
with 0x
CONFIG SECTIONS
At present, the only config section known to the IPSEC software is the
one named setup, which contains information used when the software is
being started (see ipsec_setup(8)).
Here's an example:
config setup
interfaces="ipsec0=eth1 ipsec1=ppp0"
klipsdebug=none
plutodebug=all
manualstart=
plutoload="snta sntb sntc sntd"
plutostart=
Parameters are optional unless marked ``(required)''. The currently-accepted parameter
names in a config setup section are:
- interfaces
- (required) virtual and physical interfaces for IPSEC to use: a single virtual=physical
pair, a (quoted!) list of pairs separated by white space, or %defaultroute,
which means to find the interface d that the default route points to,
and then act as if the value was ``ipsec0=d''. (Also, in the %defaultroute
case, information about the default route and its interface is noted for use
by ipsec_manual(8) and ipsec_auto(8).)
- forwardcontrol
- whether setup should turn IP forwarding on after IPSEC is started,
and off before it is stopped; acceptable values are yes and (the
default) no. For this to have full effect, forwarding must be turned
off before the hardware interfaces are brought up (e.g., FORWARD_IPV4=false
in Red Hat 5.x /etc/sysconfig/network), because IPSEC doesn't get
control early enough to do that.
- syslog
- the syslog(2) ``facility'' name and
priority to use for startup/shutdown log messages, default daemon.error.
- klipsdebug
- how much KLIPS debugging output should be logged. An empty value, or the
magic value none, means no debugging output (the default). The magic
value all means full output. Otherwise only the specified types of
output (a quoted list, names separated by white space) are enabled; for
details on available debugging types, see ipsec_klipsdebug(8).
- plutodebug
- how much Pluto debugging output should be logged. An empty value, or the
magic value none, means no debugging output (the default). The magic
value all means full output. Otherwise only the specified types of
output (a quoted list, names without the --debug- prefix, separated
by white space) are enabled; for details on available debugging types, see ipsec_pluto(8).
- dumpdir
- in what directory should things started by setup (notably the Pluto
daemon) be allowed to dump core? The empty value (the default) means they
are not allowed to.
- dump
- obsolete variant of dumpdir. dump=no is synonymous with dumpdir=
and dump=yes is synonymous with dump=/var/tmp.
- manualstart
- which manually-keyed connections to set up at startup (empty, a name, or a
quoted list of names separated by white space); see ipsec_manual(8).
Default is none.
- pluto
- whether to start Pluto or not; Values are yes (the default) or no
(useful only in special circumstances).
- plutoload
- which connections (by name) to load into Pluto's internal database at
startup (empty, a name, or a quoted list of names separated by white space);
see ipsec_auto(8) for details.
Default is none. If the special value %search is used, all
connections with auto=add or auto=start are loaded.
- plutostart
- which connections (by name) to attempt to negotiate at startup (empty, a
name, or a quoted list of names separated by white space); any such names
which do not appear in plutoload are implicitly added to it. Default
is none. If the special value %search is used, all connections with auto=start
are started.
- plutowait
- should startup wait for each plutostart negotiation attempt to
finish before proceeding? Values are yes (the default) or no.
FILES
/etc/ipsec.conf
SEE ALSO
ipsec(8), ipsec_auto(8),
ipsec_manual(8), ipsec_rsasigkey(8)
HISTORY
Designed for the FreeS/WAN project <http://www.xs4all.nl/~freeswan/>
by Henry Spencer.
BUGS
Including attributes of the participant-to-participant negotiation
(authentication methods, ikelifetime, etc.) as an attribute of an IPSEC
connection, rather than of a security gateway, is dubious.
The keyingtries default should be 0.
Ipsec_manual is not nearly as generous about the syntax of subnets,
addresses, etc. as the usual FreeS/WAN user interfaces. Four-component
dotted-decimal must be used for all addresses. It is smart enough to
translate bit-count netmasks to dotted-decimal form.
Putting an auto parameter in a conn %default section does not
work. Analogously, an auto parameter cannot be acquired from a section
appended by an also parameter.
It would be good to have a line-continuation syntax, especially for the very
long lines involved in RSA signature keys.
The ability to specify different identities, authby, and public keys
for different automatic-keyed connections between the same participants is
misleading; this doesn't work dependably because the identity of the
participants is not known early enough. This is especially awkward for the
``Road Warrior'' case, where the remote IP address is specified as 0.0.0.0,
and that is considered to be the ``participant'' for such connections.
Index
- NAME
-
- DESCRIPTION
-
- CONN SECTIONS
-
- CONN PARAMETERS: GENERAL
-
- CONN PARAMETERS: AUTOMATIC KEYING
-
- CONN PARAMETERS: MANUAL KEYING
-
- CONFIG SECTIONS
-
- FILES
-
- SEE ALSO
-
- HISTORY
-
- BUGS
-
This document was created by man2html,
using the manual pages.
Time: 21:22:48 GMT, February 08, 2000
Content-type: text/html
|