| Message ID | 20190613144113.6418-1-arne@rfc2549.org |
|---|---|
| Headers |
Return-Path: <openvpn-devel-bounces@lists.sourceforge.net> Delivered-To: patchwork@openvpn.net Delivered-To: patchwork@openvpn.net Received: from director10.mail.ord1d.rsapps.net ([172.30.191.6]) by backend30.mail.ord1d.rsapps.net with LMTP id iHTOFtFgAl2QZgAAIUCqbw for <patchwork@openvpn.net>; Thu, 13 Jun 2019 10:42:25 -0400 Received: from proxy10.mail.ord1d.rsapps.net ([172.30.191.6]) by director10.mail.ord1d.rsapps.net with LMTP id UN6wFtFgAl16awAApN4f7A ; Thu, 13 Jun 2019 10:42:25 -0400 Received: from smtp7.gate.ord1c ([172.30.191.6]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) by proxy10.mail.ord1d.rsapps.net with LMTP id ELJKFtFgAl3ZIAAAfSg8FQ ; Thu, 13 Jun 2019 10:42:25 -0400 X-Spam-Threshold: 95 X-Spam-Score: 0 X-Spam-Flag: NO X-Virus-Scanned: OK X-Orig-To: openvpnslackdevel@openvpn.net X-Originating-Ip: [216.105.38.7] Authentication-Results: smtp7.gate.ord1c.rsapps.net; iprev=pass policy.iprev="216.105.38.7"; spf=pass smtp.mailfrom="openvpn-devel-bounces@lists.sourceforge.net" smtp.helo="lists.sourceforge.net"; dkim=fail (signature verification failed) header.d=sourceforge.net; dkim=fail (signature verification failed) header.d=sf.net; dmarc=none (p=nil; dis=none) header.from=rfc2549.org X-Suspicious-Flag: YES X-Classification-ID: 74afa970-8de9-11e9-b87b-bc305bf04148-1-1 Received: from [216.105.38.7] ([216.105.38.7:40898] helo=lists.sourceforge.net) by smtp7.gate.ord1c.rsapps.net (envelope-from <openvpn-devel-bounces@lists.sourceforge.net>) (ecelerity 4.2.38.62370 r(:)) with ESMTPS (cipher=DHE-RSA-AES256-GCM-SHA384) id 0B/EC-01898-0D0620D5; Thu, 13 Jun 2019 10:42:24 -0400 Received: from [127.0.0.1] (helo=sfs-ml-2.v29.lw.sourceforge.com) by sfs-ml-2.v29.lw.sourceforge.com with esmtp (Exim 4.90_1) (envelope-from <openvpn-devel-bounces@lists.sourceforge.net>) id 1hbQv2-0006z7-0u; Thu, 13 Jun 2019 14:41:36 +0000 Received: from [172.30.20.202] (helo=mx.sourceforge.net) by sfs-ml-2.v29.lw.sourceforge.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.90_1) (envelope-from <arne@kamera.blinkt.de>) id 1hbQuz-0006ys-C8 for openvpn-devel@lists.sourceforge.net; Thu, 13 Jun 2019 14:41:33 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sourceforge.net; s=x; h=Message-Id:Date:Subject:To:From:Sender:Reply-To:Cc: MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=MYuovtptQkkrFfKzQ6cp4Ym4d9pbEPnnWsowL6SEsuI=; b=gjcoq+Q/WuZpRmlc9eP7AOqJap n7Av8vRwqaBQNO26dvre+nl8TQXQfjM2xkaH6O5O9bzmpam21EBriGe+7zA/Ht80Z1gtCrXtr00Ti uunlSy2+8Ve+L/HZuBbFzjf9Ve/Hqpwx/Nhdaf9jC0uhfxaz1Lj1HlhlxlkV9psNuI/0=; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sf.net; s=x ; h=Message-Id:Date:Subject:To:From:Sender:Reply-To:Cc:MIME-Version: Content-Type:Content-Transfer-Encoding:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=MYuovtptQkkrFfKzQ6cp4Ym4d9pbEPnnWsowL6SEsuI=; b=FXXuI+ghd90U3QztMH46r4o87+ c3+e0LMlSlxNffEbpHp1P63E6M9AKTrQh3kGK7g0UkzVq69EtFjju3uH0izmHLuGcraHd4SswwYnV z39Yr8BWP04Ry3vv90pu9b5ympfjl3q+x2wfJDzR8tF5myWt/QH1gZXdxdVUpat8EI7U=; Received: from [192.26.174.232] (helo=mail.blinkt.de) by sfi-mx-4.v28.lw.sourceforge.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.90_1) id 1hbQuw-00BdMZ-CC for openvpn-devel@lists.sourceforge.net; Thu, 13 Jun 2019 14:41:33 +0000 Received: from kamera.blinkt.de ([2001:638:502:390:20c:29ff:fec8:535c]) by mail.blinkt.de with smtp (Exim 4.91 (FreeBSD)) (envelope-from <arne@kamera.blinkt.de>) id 1hbQuf-000OBH-SL for openvpn-devel@lists.sourceforge.net; Thu, 13 Jun 2019 16:41:13 +0200 Received: (nullmailer pid 6463 invoked by uid 10006); Thu, 13 Jun 2019 14:41:13 -0000 From: Arne Schwabe <arne@rfc2549.org> To: openvpn-devel@lists.sourceforge.net Date: Thu, 13 Jun 2019 16:41:08 +0200 Message-Id: <20190613144113.6418-1-arne@rfc2549.org> X-Mailer: git-send-email 2.17.1 X-Spam-Report: Spam Filtering performed by mx.sourceforge.net. See http://spamassassin.org/tag/ for more details. 0.2 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level mail domains are different 0.0 SPF_NONE SPF: sender does not publish an SPF Record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 1.0 RDNS_NONE Delivered to internal network by a host with no rDNS X-Headers-End: 1hbQuw-00BdMZ-CC Subject: [Openvpn-devel] [PATCH 0/5] Implement additional two step authentication methods X-BeenThere: openvpn-devel@lists.sourceforge.net X-Mailman-Version: 2.1.21 Precedence: list List-Id: <openvpn-devel.lists.sourceforge.net> List-Unsubscribe: <https://lists.sourceforge.net/lists/options/openvpn-devel>, <mailto:openvpn-devel-request@lists.sourceforge.net?subject=unsubscribe> List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum_name=openvpn-devel> List-Post: <mailto:openvpn-devel@lists.sourceforge.net> List-Help: <mailto:openvpn-devel-request@lists.sourceforge.net?subject=help> List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/openvpn-devel>, <mailto:openvpn-devel-request@lists.sourceforge.net?subject=subscribe> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: openvpn-devel-bounces@lists.sourceforge.net X-getmail-retrieved-from-mailbox: Inbox |
| Series |
Implement additional two step authentication methods
|
|
Message
Arne Schwabe
June 13, 2019, 4:41 a.m. UTC
These patches mainly implement forwarding passing/forwarding extra messages between management interface on server and client side. These new extra messages can be used to implement a two step authentication like TOTP (Google Authenticator) or web based out of band (like SAML). Since this requires a tight integration on both client and server side, it is currently only supported with the management interface. Arne Schwabe (5): Implement parsing and sending INFO and INFO_PRE control messages Implement forwarding client CR_RESPONSE messages to management Implement support for signalling IV_SSO to server Implement sending response to challenge via CR_RESPONSE Implement sending SSO challenge to clients doc/management-notes.txt | 74 ++++++++++++++++++++++++++++ src/openvpn/forward.c | 12 +++++ src/openvpn/init.c | 25 ++++++++++ src/openvpn/manage.c | 101 ++++++++++++++++++++++++++++++++++++++- src/openvpn/manage.h | 8 ++++ src/openvpn/multi.c | 19 ++++++++ src/openvpn/push.c | 78 ++++++++++++++++++++++++++++++ src/openvpn/push.h | 7 +++ src/openvpn/ssl.c | 4 +- 9 files changed, 325 insertions(+), 3 deletions(-)
Comments
Hi On Thu, Jun 13, 2019 at 10:42 AM Arne Schwabe <arne@rfc2549.org> wrote: > > These patches mainly implement forwarding passing/forwarding extra > messages between management interface on server and client side. > > These new extra messages can be used to implement a two step > authentication like TOTP (Google Authenticator) or web based > out of band (like SAML). > > Since this requires a tight integration on both client and > server side, it is currently only supported with the management > interface. > > Arne Schwabe (5): > Implement parsing and sending INFO and INFO_PRE control messages > Implement forwarding client CR_RESPONSE messages to management > Implement support for signalling IV_SSO to server > Implement sending response to challenge via CR_RESPONSE > Implement sending SSO challenge to clients I haven't looked at the patches, but a quick question. I haven't come across any 2FA mechanisms that cannot be handled (in principle) by the current static an dynamic CR in OpenVPN. Except that some dynamic CR (e.g, U2F) will require the possibility to transmit larger messages than currently possible -- especially the 256 byte limitation in responses from the management as those are parsed by the config-parser. And possibly the TLS channel buffer size may need to be increased. Once those limits are extended, do we need anything more? You mention google-authenticator OTP but that can perfectly handled as a static challenge as many do right now. The current dynamic response implementation is a bad hack -- fail the auth with challenge embedded in the reason text and then send the response as a "password" during the next round. So is this about making a cleaner implementation? Or am I missing something more subtle? Selva
Hi, On Thu, Jun 13, 2019 at 2:35 PM Selva Nair <selva.nair@gmail.com> wrote: > > Hi > > On Thu, Jun 13, 2019 at 10:42 AM Arne Schwabe <arne@rfc2549.org> wrote: > > > > These patches mainly implement forwarding passing/forwarding extra > > messages between management interface on server and client side. > > > > These new extra messages can be used to implement a two step > > authentication like TOTP (Google Authenticator) or web based > > out of band (like SAML). > > > > Since this requires a tight integration on both client and > > server side, it is currently only supported with the management > > interface. > > > > Arne Schwabe (5): > > Implement parsing and sending INFO and INFO_PRE control messages > > Implement forwarding client CR_RESPONSE messages to management > > Implement support for signalling IV_SSO to server > > Implement sending response to challenge via CR_RESPONSE > > Implement sending SSO challenge to clients > > I haven't looked at the patches, but a quick question. I haven't come across any > 2FA mechanisms that cannot be handled (in principle) by the current static an > dynamic CR in OpenVPN. +1. What functionality does this new mechanism add? Tunnelblick implements 2FA through the management interface using the existing static and dynamic challenge-response mechanism. For a dynamic challenge, for example. Tunnelblick gets a response from the user in a popup window or from a user-specified script. (A script is usually used to get the response from hardware devices.) Best regards, Jon Bullard
> I haven't looked at the patches, but a quick question. I haven't come across any > 2FA mechanisms that cannot be handled (in principle) by the current static an > dynamic CR in OpenVPN. Except that some dynamic CR (e.g, U2F) will require > the possibility to transmit larger messages than currently possible -- > especially > the 256 byte limitation in responses from the management as those are > parsed by the config-parser. And possibly the TLS channel buffer size may need > to be increased. > > Once those limits are extended, do we need anything more? > > You mention google-authenticator OTP but that can perfectly handled as a static > challenge as many do right now. > > The current dynamic response implementation is a bad hack -- fail the auth > with challenge embedded in the reason text and then send the response as a > "password" during the next round. So is this about making a cleaner > implementation? Or am I missing something more subtle? Two things basically that play to together making it cleaner and allow web based authentication to actually not a horrible hack. WEB based SSO would work as follows: - Clients connects - Server get the client auth request. - Instead of sending success/failed right way, it will send a challenge - OPENURL:example.com/logintomyvpn - Client will continue to wait in this not yet authenticated state - User will login into the web page, the backend of the web notifies the VPN server about the result - VPN will send do client auth succces/failed depending on result - Client is connected. Arne
> > +1. What functionality does this new mechanism add? > > Tunnelblick implements 2FA through the management interface using the > existing static and dynamic challenge-response mechanism. For a > dynamic challenge, for example. Tunnelblick gets a response from the user in > a popup window or from a user-specified script. (A script is usually > used to get the response from hardware devices.) > It adds 2FA without reconnect dance and also the ability to do something like web based SSO authentication. But a server should not use these unless your client will announce support for them via IV_SSO variable. The v2 version of the patch will describe the IV_SSO variable too. Arne