LoginSignup
11
12

More than 3 years have passed since last update.

SSLHでHTTPS, SSH, OpenVPNを443番ポートに共存させる

Last updated at Posted at 2020-11-13

はじめに

会社や学校、公共のWi-Fiなど、80, 443番ポートといった一般的なポートしか通過させない環境では、通常の22, 1194番ポートを用いたSSH, OpenVPNは使用することができない。
また、常にインターネットに公開されているサーバーでは、いくつもポートを開放したくない。
そこで、それらを全てまとめて443番ポートで受け付けてしまおうとするのがこれから紹介するSSLHだ。
今回はHTTPS, SSH, OpenVPNを443番ポートで待ち受けするための設定を行う。

環境

  • Ubuntu 20.04.1 LTS (GNU/Linux 5.4.0-52-generic x86_64)
  • sslh-fork 1.20-1
  • nginx/1.18.0
  • OpenSSH_8.2p1
  • OpenVPN 2.4.7

手順

既存のアプリケーションのポート変更

すでに443番ポートを使用しているアプリケーションがある場合には、設定を変更し適用しておく必要がある。
nginxなら、serverディレクティブの listen 443 ssl;listen 9443 ssl; など別のポートに変更しておく。

SSLHのインストール

SSLHをインストールする
sudo apt update
sudo apt install sslh

SSLHの設定

SSLHの設定は /etc/default/sslh にあるので、これをお好みのエディタで編集する。

SSLHの設定の編集
sudo vi /etc/default/sslh

HTTPSが9443番、SSHが22番、OpenVPNが1194番の場合、下記のように編集する。

SSLHの設定
RUN=yes
DAEMON=/usr/sbin/sslh
DAEMON_OPTS="--user sslh --listen [サーバーのIPアドレス]:443 --ssl 127.0.0.1:9443 --ssh 127.0.0.1:22 --openvpn 127.0.0.1:1194 --pidfile /var/run/sslh/sslh.pid"

他にもいくつかのプロトコルに対応しており sslh -h で確認できる。
対応していないプロトコルも --anyprot [IPアドレス]:[ポート番号] とすることで転送できる。

ポート開放

TCPを指定してポートを開放する。
また、もともと使用していたポートを閉じる。

ufwの場合の例
# まだ開けていない場合
sudo ufw allow 443/tcp
# 既存の設定確認
sudo ufw status numbered
# 既存の設定の削除
sudo ufw delete [SSH, OpenVPNの設定の番号]
# 設定の適用
sudo ufw reload

デーモン化

systemctlの設定を行いデーモン化する。

sudo systemctl start sslh
sudo systemctl enable sslh

疎通確認

sslhで設定したものに問題なく接続できるか確認する。

疎通確認
curl [サーバーのURL(HTTPS)]
ssh -p 443 [ユーザー名]@[サーバーのIPアドレス]
vi client.ovpn  # OpenVPNのポート設定を修正する
openvpn --config client.ovpn

おわり

みんなで仲良く貴重な資源、443番ポートを使っていこう。

11
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
12