suzuzusu日記

(´・ω・`)

sslhを用いてsshとOpenVPNを443portで待ち受ける

sslh でport443 を有効活用して、sshもhttpsも同時に待ち受けする。

この記事を見てsslhはopenvpnも対応しているらしいので試してみることにした。

環境はHyper-V上のdebian 8.6 ip:192.168.10.2

OpenVPN設定

sudo apt-get install openvpn

cd /usr/share/easy-rsa/

# 各証明書生成
. ./vars
./clean-all
./build-ca
./build-key-server server
./build-key client
./build-dh

# サーバに必要な証明書を配置する
cp keys/ca.crt /etc/openvpn/
cp keys/server.crt /etc/openvpn/
cp keys/server.key /etc/openvpn/
cp keys/dh2048.pem /etc/openvpn/

# /etc/share/easy-rsa/keys/ 
# 上記のディレクトリにクライアントに必要な各証明書ca.crt client.crt client.keyがあるのでクライアントに安全な方法で移す

openvpnサーバの設定ファイル(/etc/openvpn/server.conf)を以下に記述する。

port 1194
proto tcp
dev tun

ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh2048.pem

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3

OpenVPN起動

sudo systemctl start openvpn.service

sslh設定

sudo apt-get install sslh

sslhの設定ファイル(/etc/default/sslh)を以下に記述する。

RUN=yes

DAEMON=/usr/sbin/sslh

DAEMON_OPTS="--user sslh --listen 192.168.10.2:443 --ssh 127.0.0.1:22 --openvpn 127.0.0.1:1194 --pidfile /var/run/sslh/sslh.pid"

sslh起動

sudo systemctl start sslh.service

まとめ

クライアント側でssh, openvpnを試したが両方無事接続することを確認した。 vpnを使用する際のsslhのレイテンシがどの程度なのかまだ検討してないので分からないが概ね問題無いのではないのかと思う。 443portは本当に貴重なので今後もsslhは活用していきたいと思う。

参考

takuya-1st.hatenablog.jp

How To | OpenVPN.JP