sshとsslを443ポートで同居させる『sslh』を使ってみる

sshというと22番ポートを利用するものだが、環境によっては利用できない事がある。
で、そういった場合だと443番ポート(SSL)を利用する場合が多いのだが、Webサーバなんかの場合だとすでにhttpsで使用している場合が多い。そんなとき、sshとsslを443番ポートで同居させて、それぞれのパケットのときは適切に割り振りをしてくれるリバースプロキシのような動作をしてくれるのが『SSLH』になる。

1.インストール

CentOSやDebian系のOSを使っている場合は簡単で、yum(epelが必要)やaptからインストールが可能だ。

●Debian/Ubuntu系の場合

sudo apt install sslh

 

●CentOSの場合

sudo yum install epel-release
sudo yum install sslh
Sponsored Links

2.設定する

インストールできたら、諸々の設定を行う。
まず、Webサーバ側で443番ポートを127.0.0.1にのみ許可してやり、外部からアクセス時の443ポートを開放してやる。
以下、Nginx or Apacheでの設定ファイル別での記述(Apacheの場合はVirtualHostで設定する方がいいだろう)。

●Nginxの場合(ex:/etc/nginx/nginx.conf)

#listen 443 ssl;
listen 127.0.0.1:443 ssl;

●Apacheの場合(ex:/etc/httpd/conf.d/ssl.conf)

#Listen 443 https
Listen 127.0.0.1:443 https

 

Webサーバ側の設定が終わったら、sslhの設定を行う。
過去のバージョンから設定ファイルが変わったようで、jsonっぽい書き方になっているようだ。
「/etc/sslh.cfg」で、listenするhostに受付をするインターフェイスのIPアドレスやホスト名を入力する。

...
# Change hostname with your external address name.
listen:
(
{ host: "IPアドレス"; port: "443"; }
);
...

 

設定ファイル編集後は、systemctlでサービスを起動してやればいい。

systemctl enable sslh
systemctl start sslh

 

設定完了後、443ポートでhttpsとsslがそれぞれ利用できることを確認する。
デフォルトの状態だとhttpも443で利用できてしまうので、不要であれば上記設定ファイルで記述を削除しておくといいだろう。

 


Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。

*