Commit Graph
100 Commits
Author SHA1 Message Date
Tobias Brunner 10d0de0c9a android: Update platform tools and pull in support libs
We'll have to change some stuff that Google deprecated (e.g. the tabs in
the ActionBar) and that requires changing the theme at least in activities.
Since that would look a bit inconsistent we'll change it globally and
use parts of the support library.
2016-04-27 14:24:25 +02:00
Tobias Brunner 9ab746cb0f android: Update Android Gradle plugin and wrapper 2016-04-27 14:24:25 +02:00
Tobias Brunner 61587aa6fc pool: Use correct name to remove index for CHILD_SA TS in SQLite script
Fixes #1415.
2016-04-18 10:08:44 +02:00
Tobias Brunner 254726b59e kernel-pfkey: Add support for manual priorities
Also orders policies with equals priorities by their automatic priority.
2016-04-15 10:39:01 +02:00
Tobias Brunner 4e59618382 kernel-pfkey: Update priority calculation formula to the new one in kernel-netlink
Since the selectors are not exactly the same (no port masks, no interface)
some small tweaks have been applied.
2016-04-15 10:39:00 +02:00
Tobias Brunner 869f4e90b1 kernel-netlink: Order policies with equal priorities by their automatic priority
This allows using manual priorities for traps, which have a lower
base priority than the resulting IPsec policies.  This could otherwise
be problematic if, for example, swanctl --install/uninstall is used while
an SA is established combined with e.g. IPComp, where the trap policy does
not look the same as the IPsec policy (which is now otherwise often the case
as the reqids stay the same).

It also orders policies by selector size if manual priorities are configured
and narrowing occurs.
2016-04-15 10:39:00 +02:00
Tobias Brunner ea27163ee1 Merge branch 'boringssl'
Adds some fixes to the openssl plugin to build against BoringSSL.

Fixes #1374.
2016-04-15 10:34:27 +02:00
Tobias Brunner 689bb34958 curl: Add TLS support if libcurl is built against BoringSSL
We don't have to rely on the openssl plugin and its threading
initialization as BoringSSL is thread-safe out of the box.
2016-04-15 10:32:53 +02:00
Tobias Brunner 47a46be597 openssl: BoringSSL does not support configuration
The other initialization functions are still defined but many are
apparently no-ops (this is also true for the threading initialization).
2016-04-15 10:32:53 +02:00
Tobias Brunner c8a219a28d openssl: The member storing the DH exponent length has been renamed in BoringSSL 2016-04-15 10:32:53 +02:00
Tobias Brunner 77df573a95 openssl: Use proper EVP macro to determine size of a hash 2016-04-15 10:32:52 +02:00
Tobias Brunner 9b85a6853b android: Remove OPENSSL_NO_EC* defines
Current versions of OpenSSL/BoringSSL shipped with Android support ECC.
2016-04-15 10:32:52 +02:00
Tobias Brunner cb65e95d4a android: OPENSSL_NO_ENGINE is now properly defined in the headers 2016-04-15 10:32:36 +02:00
Tobias Brunner de9b3491ad curl: Handle LibreSSL like OpenSSL in regards to multi-threading
LibreSSL is API compatible so our openssl plugin does not need any
changes and it works fine with the curl plugin.
2016-04-15 10:31:19 +02:00
Tobias Brunner e8c73c1cf0 configure: Replace two remaining usages of AC_HAVE_LIBRARY with AC_CHECK_LIB 2016-04-15 10:31:19 +02:00
Tobias Brunner 960632ffb0 thread: Don't hold mutex when calling cleanup handlers while terminating
This could interfere with cleanup handlers that try to acquire
mutexes while other threads holding these try to e.g. cancel the threads.

As cleanup handlers are only queued by the threads themselves we don't need
any synchronization to access the list.

Fixes #1401.
2016-04-13 13:55:20 +02:00
Tobias Brunner 4af7aa18f0 Ignore Qt Creator project files
Closes strongswan/strongswan#32.
2016-04-11 16:16:57 +02:00
Tobias Brunner 2ba5dadb12 peer-cfg: Use struct to pass data to constructor 2016-04-09 16:51:01 +02:00
Tobias Brunner 8a00a8452d child-cfg: Use struct to pass data to constructor 2016-04-09 16:51:01 +02:00
Tobias Brunner fd8f1194f3 kernel-pfkey: Prefer policies with reqid over those without 2016-04-09 16:51:01 +02:00
Tobias Brunner 0ff8ce9452 kernel-pfkey: Only install templates for regular IPsec policies with reqid 2016-04-09 16:51:01 +02:00
Tobias Brunner 638b4638e3 testing: Add swanctl/net2net-gw scenario 2016-04-09 16:51:00 +02:00
Tobias Brunner 23f25f9647 shunt-manager: Install "outbound" FWD policy
If there is a default drop policy forwarded traffic might otherwise not
be allowed by a specific passthrough policy (while local traffic is
allowed).
2016-04-09 16:51:00 +02:00
Tobias Brunner 83312ee5e4 kernel-netlink: Prefer policies with reqid over those without
This allows two CHILD_SAs with reversed subnets to install two FWD
policies each.  Since the outbound policy won't have a reqid set we will
end up with the two inbound FWD policies installed in the kernel, with
the correct templates to allow decrypted traffic.
2016-04-09 16:51:00 +02:00
Tobias Brunner f7e9e6a3fd kernel-netlink: Only associate templates with inbound FWD policies
We can't set a template on the outbound FWD policy (or we'd have to make
it optional).  Because if the traffic does not come from another (matching)
IPsec tunnel it would get dropped due to the template mismatch.
2016-04-09 16:51:00 +02:00
Tobias Brunner 9c12635252 child-sa: Install "outbound" FWD policy
If there is a DROP shunt that matches outbound forwarded traffic it
would get dropped as the FWD policy we install only matches decrypted
inbound traffic.  That's because the Linux kernel first checks the FWD
policies before looking up the OUT policy and SA to encrypt the packets.
2016-04-09 16:51:00 +02:00
Tobias Brunner c4387e991a kernel-netlink: Associate routes with IN policies instead of FWD policies
This allows us to install more than one FWD policy.  We already do this
in the kernel-pfkey plugin (there the original reason was that not all
kernels support FWD policies).
2016-04-09 16:50:59 +02:00
Tobias Brunner 89da06ace9 kernel: Use structs to pass information to the kernel-ipsec interface 2016-04-09 16:50:59 +02:00
Tobias Brunner ea3a4d3f72 testing: List conntrack table on sun in ikev2/host2host-transport-connmark scenario 2016-04-06 14:01:18 +02:00
Tobias Brunner aa65b8c147 testing: Version bump to 5.4.0
References #1382.
2016-04-06 11:17:40 +02:00
Tobias Brunner 76397efa21 testing: Disable leak detective when generating CRLs
GnuTLS, which can get loaded by the curl plugin, does not properly cleanup
some allocated memory when deinitializing.  This causes invalid frees if
leak detective is active.  Other invalid frees are related to time
conversions (tzset).

References #1382.
2016-04-06 11:16:59 +02:00
Tobias Brunner 7316a13bd1 pkcs11: Skip zero-padding of r and s when preparing EC signature
They are zero padded to fill the buffer.

Fixes #1377.
2016-04-05 16:17:10 +02:00
Tobias Brunner b82b5f6398 chunk: Skip all leading zero bytes in chunk_skip_zero() not just the first 2016-04-04 15:39:42 +02:00
Tobias Brunner 85597f2983 string: Gracefully handle NULL in str*eq() macros 2016-04-04 10:43:46 +02:00
Tobias Brunner 90c8cf6819 byteorder: Explicitly check for htoXeXX macros
Some platforms have XetohXX macros instead of XeXXtoh macros, in which
case we'd redefine the htoXeXX macros.
2016-03-31 19:47:31 +02:00
Tobias Brunner e8bddd64fc proposal: Use standard integer types for static keywords 2016-03-31 09:25:19 +02:00
Tobias Brunner c545688788 utils: Remove nonsensical typedefs for standard uint types 2016-03-31 09:25:11 +02:00
Tobias Brunner b39be996cc connmark: Explicitly include xt_mark.h for older kernels
Fixes #1365.
2016-03-23 14:40:29 +01:00
Tobias Brunner 2f3879c3fe android: Enable 64-bit ABIs 2016-03-23 14:18:52 +01:00
Tobias Brunner 17e36cd48c android: Enable build against API level 21
While building against this level in general would break our app on
older systems, the NDK will automatically use this level for 64-bit
ABI builds (which are not supported in older levels).  So to build
against 64-bit ABIs we have to support this API level.
2016-03-23 14:18:37 +01:00
Tobias Brunner ab88f22f78 libcharon: Add missing header file to Android.mk
Not really relevant, just to make sure both file lists are the same.
2016-03-23 14:16:32 +01:00
Tobias Brunner a9f9598ed0 testing: Updated updown scripts in libipsec scenarios to latest version 2016-03-23 14:13:07 +01:00
Tobias Brunner 958c0e8e5c ike-sa-manager: Avoid memory leak if IKE_SAs get checked in after flush() was called
A thread might check out a new IKE_SA via checkout_new() or
checkout_by_config() and start initiating it while the daemon is
terminating and the IKE_SA manager is flushed by the main thread.
That SA is not tracked yet so the main thread is not waiting for it and
the other thread is able to check it in and creating an entry after flush()
already terminated causing a memory leak.

Fixes #1348.
2016-03-23 14:02:23 +01:00
Tobias Brunner b31e8c04f2 swanctl: Fix documented directory name for remote pubkeys 2016-03-22 18:11:51 +01:00
Tobias Brunner 0ed9430d10 kernel-netlink: Fix lookup of next hops for destinations with prefix
References #1347.
2016-03-21 12:14:59 +01:00
Tobias Brunner b0c6869967 imc-os: Terminate buffer after fread(3) call to make Coverity happy 2016-03-11 15:23:18 +01:00
Tobias Brunner 8c3bcebaa6 imc-os: Correctly check return value of ftell(2) 2016-03-11 15:23:17 +01:00
Tobias Brunner 755d076fec Fix some Doxygen issues 2016-03-11 12:25:14 +01:00
Tobias Brunner 8e3940f59c man: Updated default proposals in ipsec.conf(5) 2016-03-11 10:25:06 +01:00
Tobias Brunner 0fc8b1d03e identification: Make written signed to fix error checking when printing ranges 2016-03-11 10:09:02 +01:00
Tobias Brunner 20df9d315c vici: Don't hold write lock while running or undoing start actions
Running or undoing start actions might require enumerating IKE_SAs,
which in turn might have to enumerate peer configs concurrently, which
requires acquiring a read lock.  So if we keep holding the write lock while
enumerating the SAs we provoke a deadlock.

By preventing other threads from acquiring the write lock while handling
actions, and thus preventing the modification of the configs, we largely
maintain the current synchronous behavior.  This way we also don't need to
acquire additional refs for config objects as they won't get modified/removed.

Fixes #1185.
2016-03-11 08:32:18 +01:00
Tobias Brunner 7d22a75b12 forecast: Compare the complete rules when deleting them
Same as the change in the connmark plugin.

References #1229.
2016-03-10 17:26:38 +01:00
Tobias Brunner c659d369a0 connmark: Don't restore CONNMARK for packets that already have a mark set
This allows e.g. modified versions of xl2tpd to set the mark in
situations where two clients are using the same source port behind the
same NAT, which CONNMARK can't restore properly as only one conntrack entry
will exist with the mark set to that of the client that sent the last packet.

Fixes #1230.
2016-03-10 17:26:26 +01:00
Tobias Brunner 7c9e7eb933 connmark: Compare the complete rules when deleting them
By settings a matchmask that covers the complete rule we ensure that the
correct rule is deleted (i.e. matches and targets with potentially different
marks are also compared).

Since data after the passed pointer is actually dereferenced when
comparing we definitely have to pass an array that is at least as long as
the ipt_entry.

Fixes #1229.
2016-03-10 17:26:09 +01:00
Tobias Brunner 709998e106 Merge branch 'p-cscf'
This adds the p-cscf plugin that can request P-CSCF server addresses from
an ePDG via IKEv2 (RFC 7651).  Addresses of the same families as requested
virtual IPs are requested if enabled in strongswan.conf for a particular
connection.  The plugin currently writes received addresses to the log.
2016-03-10 12:06:46 +01:00
Tobias Brunner 7e854f4d51 attr: Only enumerate attributes matching the IKE version of the current IKE_SA
Numerically configured attributes are currently sent for both versions.
2016-03-10 11:57:39 +01:00
Tobias Brunner 98a3ba8a5a attr: Add p-cscf keyword for P-CSCF server addresses 2016-03-10 11:57:38 +01:00
Tobias Brunner 276acafa2d p-cscf: Make sending requests configurable and disable it by default 2016-03-10 11:57:38 +01:00
Tobias Brunner e8262251e1 p-cscf: Only send requests if virtual IPs of the same family are requested 2016-03-10 11:57:38 +01:00
Tobias Brunner 3d91d013cc p-cscf: Add attribute handler for P-CSCF server addresses 2016-03-10 11:57:38 +01:00
Tobias Brunner 12ac5fac1a p-cscf: Add plugin stub 2016-03-10 11:57:38 +01:00
Tobias Brunner 319b031a8a payloads: Verify P-CSCF configuration attributes like others carrying IP addresses 2016-03-10 11:57:38 +01:00
Tobias Brunner 7798284da1 attributes: Define P-CSCF address attributes described in RFC 7651 2016-03-10 11:57:38 +01:00
Tobias Brunner f893b47e3d Merge branch 'mbb-reauth-online-revocation'
With these changes initiators of make-before-break reauthentications
suspend online revocation checks until after the new IKE_SA and all
CHILD_SAs are established.  See f1cbacc5d1 for details why that's
necessary.
2016-03-10 11:50:57 +01:00
Tobias Brunner b4337c5b02 NEWS: Added note on online revocation checks during make-before-break reauthentication 2016-03-10 11:46:44 +01:00
Tobias Brunner dc57c1b817 testing: Add ikev2/reauth-mbb-revoked scenario 2016-03-10 11:07:15 +01:00
Tobias Brunner d163aa5eaf testing: Generate a CRL that has moon's actual certificate revoked 2016-03-10 11:07:15 +01:00
Tobias Brunner e41adf5f05 ike-sa: Improve interaction between flush_auth_cfg and delayed revocation checks 2016-03-10 11:07:15 +01:00
Tobias Brunner f1cbacc5d1 ikev2: Delay online revocation checks during make-before-break reauthentication
We do these checks after the SA is fully established.

When establishing an SA the responder is always able to install the
CHILD_SA created with the IKE_SA before the initiator can do so.
During make-before-break reauthentication this could cause traffic sent
by the responder to get dropped if the installation of the SA on the
initiator is delayed e.g. by OCSP/CRL checks.

In particular, if the OCSP/CRL URIs are reachable via IPsec tunnel (e.g.
with rightsubnet=0.0.0.0/0) the initiator is unable to reach them during
make-before-break reauthentication as it wouldn't be able to decrypt the
response that the responder sends using the new CHILD_SA.

By delaying the revocation checks until the make-before-break
reauthentication is completed we avoid the problems described above.
Since this only affects reauthentication, not the original IKE_SA, and the
delay until the checks are performed is usually not that long this
doesn't impose much of a reduction in the overall security.
2016-03-10 11:07:15 +01:00
Tobias Brunner 8ce78e43a4 ikev2: Add task that verifies a peer's certificate
On failure the SA is deleted and reestablished as configured.  The task
is activated after the REAUTH_COMPLETE task so a make-before-break reauth
is completed before the new SA might get torn down.
2016-03-10 11:07:15 +01:00
Tobias Brunner 034a462901 ikev2: Initiate other tasks after a no-op task 2016-03-10 11:07:14 +01:00
Tobias Brunner a05cff1ec0 ikev2: Don't do online revocation checks in pubkey authenticator if requested
We also update the auth config so the constraints are not enforced.
2016-03-10 11:07:14 +01:00
Tobias Brunner e19162a509 ike-sa: Add condition to suspend online certificate revocation checks for an IKE_SA 2016-03-10 11:07:14 +01:00
Tobias Brunner 1b9c1ae018 ike-sa: Add method to verify certificates in completed authentication rounds 2016-03-10 11:07:14 +01:00
Tobias Brunner ef9171ad1e auth-cfg: Add a rule to suspend certificate validation constraints 2016-03-10 11:07:14 +01:00
Tobias Brunner f371effc5d credential-manager: Check cache queue when destroying trusted certificate enumerator
We already do this in the trusted public key enumerator (which
internally uses the trusted certificate enumerator) but should do so
also when this enumerator is used directly (since the public key
enumerator has the read lock the additional call will just be skipped
there).
2016-03-10 11:07:14 +01:00
Tobias Brunner 5452e3d66e credential-manager: Make online revocation checks optional for public key enumerator 2016-03-10 11:07:14 +01:00
Tobias Brunner 819da83fcc Merge branch 'charon-conf-fallback'
Makes charon-systemd and charon-svc also load settings from the charon
section in strongswan.conf.

Fixes #1300.
2016-03-08 10:56:27 +01:00
Tobias Brunner 2e190dca04 charon-svc: Inherit all settings from the charon section
Same as with charon-systemd.
2016-03-08 10:56:19 +01:00
Tobias Brunner bc4e689db1 charon-systemd: Inherit all settings from the charon section
Our default config files are very charon specific.  So to avoid
confusion when only charon-systemd is installed we just default to all
settings defined for charon.  Since charon-systemd probably won't be used
together with charon this should not cause conflicts (settings may still
be overridden via the charon-systemd section).
2016-03-08 10:56:19 +01:00
Tobias Brunner 5c8dc908d0 library: Add option to register additional namespaces before calling library_init()
Because settings are already accessed in library_init(), calling
add_fallback() externally after calling library_init() is not ideal.
This way namespaces already serve as fallback while library_init() is
executed and they are also in the correct order so that libstrongswan is
always the last root section.
2016-03-08 10:56:19 +01:00
Tobias Brunner 101abed566 vici: Replace child configs atomically
This also leaves unmodified configs as they are.
2016-03-08 10:21:58 +01:00
Tobias Brunner 622c2b2c33 peer-cfg: Add method to atomically replace child configs 2016-03-08 10:21:58 +01:00
Tobias Brunner 8db4f19ad9 ike-cfg: Use new method to compare proposal lists in equals() 2016-03-08 10:21:57 +01:00
Tobias Brunner f6a5e6b6a9 peer-cfg: Use new method to compare linked lists in equals()
This also compares the complete lists not only the first two items.
2016-03-08 10:21:57 +01:00
Tobias Brunner 3af23606bf child-cfg: Add equals() method 2016-03-08 10:21:57 +01:00
Tobias Brunner 348b0ffbc6 linked-list: Add method to compare two lists of objects for equality 2016-03-08 10:21:57 +01:00
Tobias Brunner 229cdf6bc8 vici: Order auth rounds by optional round parameter instead of by position in the request 2016-03-08 10:04:55 +01:00
Tobias Brunner fab4c845ec ikev1: Send NAT-D payloads after vendor ID payloads in Aggressive Mode messages
Some implementations might otherwise not recognize the NAT-D payload
type.  Also moves SIG and HASH payloads last in these messages.

Fixes #1239.
2016-03-07 14:13:12 +01:00
Tobias Brunner ec9566ae24 ike-sa-manager: Log some additional details like SPIs when checking out SAs 2016-03-04 18:43:27 +01:00
Tobias Brunner 67e28a3afa smp: Correctly return IKE SPIs stored in network order 2016-03-04 18:43:26 +01:00
Tobias Brunner e32504352d vici: Correctly return IKE SPIs stored in network order 2016-03-04 18:43:26 +01:00
Tobias Brunner db00982dad stroke: Correctly print IKE SPIs stored in network order 2016-03-04 18:43:26 +01:00
Tobias Brunner fac9fd7368 byteorder: Simplify htoun64/untoh64 functions 2016-03-04 18:43:26 +01:00
Tobias Brunner 14de79604a byteorder: Always define be64toh/htobe64 macros 2016-03-04 18:43:26 +01:00
Tobias Brunner 5b45e15ad3 Merge branch 'ike-sig-contraints'
Signature scheme constraints against IKEv2 authentication may now be
configured independently of constraints against trustchains.
2016-03-04 16:43:24 +01:00
Tobias Brunner c171afeaed NEWS: Add note about IKEv2 signature scheme constraints 2016-03-04 16:42:30 +01:00
Tobias Brunner 130c485be6 swanctl: Document signature scheme constraints 2016-03-04 16:19:54 +01:00
Tobias Brunner 1ecec95dff vici: Add support for pubkey constraints with EAP-TLS
This is a feature currently supported by stroke.
2016-03-04 16:19:54 +01:00
Tobias Brunner 3c23a75120 auth-cfg: Make IKE signature schemes configurable
This also restores the charon.signature_authentication_constraints
functionality, that is, if no explicit IKE signature schemes are
configured we apply all regular signature constraints as IKE constraints.
2016-03-04 16:19:54 +01:00