Top/EBUG勉強会/20170211_SSLVPN

relayd + DeleGate + acme-client = SSLVPN

EBUG 第60回会合
2017年 2月11日、万代市民会館
川俣吉広、kaw@on.rim.or.jp

発端

本件の例では、以下の構成でSSL-VPNの運用を行っていた。

INTERNET                      || INTRANET LAN
https://gw.foobar.com/bee/*   || http://sv.inner.foobar.com/quux/baz/*
                              ||
                          [OpenBSD 5.8]
[Web Broweser]---HTTPS--->[DeleGate   ]---HTTP--->[Web Server]
                         /[     9.9.13]
                        /     ||
                     Basic    ||
                     Auth.    ||

このGWではDeleGateを用いて、以下のことをやっている;

#!/bin/sh

function dgcmd {
    /usr/fuguita/sbin/delegated \
        DGROOT=/home/delegated \
        OWNER=delegated/delegated \
        LOGDIR='log/[date+archived/%Y%m]' \
        "$@"
}

umask 0027

case X"$1" in
    Xstart)  dgcmd \
                -Pfoobar.com:443 \          <-(A)
                 SERVER=https \             <-(A)
                 FCL=sslway \               <-(A)
                 REMITTABLE="http,https" \                  <-許可するプロトコル
                 RELIABLE="*.jp,*.gfngfn.net" \             <-許可するアクセス元
                 REACHABLE="inner.foobar.com,google.com" \  <-許可するアクセス先
                 AUTH=proxy:pauth \                                                        <-(B)
                 AUTHORIZER='-list{guest:welcome772,kaw:op2p29eje,ouquser:pvs/neue288}' \  <-(B)
                 MOUNT='/proj1/* http://gwe1.inner.foobar.com/bd/proj1/*' \   <-(C)
                 MOUNT='/proj2/* http://iwf.inner.foobar.com/wf/ntp8x16/*' \  <-(C)
                 MOUNT='/* https://google.com/?q=*' ;;                        <-(C)
    Xstop)    dgcmd -Pfoobar.com:443 -Fkill ;;
    Xrestart) $0 stop; sleep 15; $0 start;;
    *)        echo "$0 start|stop|restart" >&2 ;;
esac

このサーバを更新し、OpenBSD 5.8 -> OpenBSD 6.0 に変更したところ、DeleGateがlibssl, libcryptoをロードしなくなった。
外部よりアクセスすると、ブラウザに

このサイトにアクセスできません
 foobar.com により途中で接続が切断されました。

と表示され(Google Chromeの場合)、接続できない。また、DeleGateのログでは、起動時に

--ERROR: can't link the SSL/Crypto library.

ブラウザ接続時、DeleGateのログに

[OpenBSD/6.0] not OOB: BrokenSocket[25] <= _-select.c91 ####

というエラーが記録される。

代替策として、SSL/TLSの終端を行う部分を他のソフトウェアで置き換えることとした。
候補としては、Squid, Nginx, Varnishなどのリバースプロキシがあるが、今回はOpenBSDネイティブのrelaydを使用した。

併せて、SSL/TLSのサーバ証明書を自己書名のものから、Let's Encryptから発行されたものに変更した。

relaydとは

OpenBSDネイティブなL7ゲートウェイ。これを使用してロードバランサを構築可能。

acme-clientについて


Top/EBUG勉強会/20170211_SSLVPN

Front page   New Page list Search Recent changes   Help   RSS of recent changes