GNU/Linux >> Linux の 問題 >  >> Linux

SSLH –HTTPSとSSHで同じポートを共有する

この簡単なチュートリアルでは、SSLHとは何か、SSLHをインストールする方法、およびhttpsと同じポートを共有するようにSSLHを構成する方法、およびLinuxおよびUnixライクなオペレーティングシステムでのsshについて説明します。

SSLHとは何ですか?

一部のインターネットサービスプロバイダーや企業は、ほとんどのポートをブロックし、ポート80や443などの特定のポートのみにセキュリティを強化することを許可している可能性があります。

このような場合、選択の余地はありませんが、複数のプログラムに同じポートを使用します。たとえば、HTTPSポート 443 、ブロックされることはめったにありません。ここがSSLH 、SSL/SSHマルチプレクサが役立ちます。

SSLHは、ポート443で着信接続をリッスンします。これを簡単に言うと、SSLHを使用すると、Linuxシステムのポート443で複数のプログラムまたはサービスを実行できます。したがって、同じポートを同時に使用してSSLとSSHの両方を使用できます。

ほとんどのポートがファイアウォールによってブロックされている状況になったことがある場合は、SSLHを使用してリモートサーバーにアクセスできます。

LinuxにSSLHをインストールする

SSLHはほとんどのLinuxディストリビューションにパッケージ化されているため、デフォルトのパッケージマネージャーを使用してインストールできます。

Debian Ubuntu Linux Mint およびポップOS 、実行:

$ sudo apt install sslh

SSLHのインストール中に、sslhをinetdからのサービスとして実行するか、スタンドアロンサーバーとして実行するかを確認するメッセージが表示されます。

それぞれの選択には独自の利点があります。 1日あたりの接続数が少ない場合は、リソースを節約するためにinetdからsslhを実行することをお勧めします。

一方、接続が多い場合は、着信接続ごとに新しいプロセスが生成されないように、sslhをスタンドアロンサーバーとして実行する必要があります。

Arch Linux Antergos、Manjaro Linuxなどの派生物は、以下に示すようにPacmanを使用してインストールします。

$ sudo pacman -S sslh

RHEL CentOS AlmaLinux およびRockyLinux EPELを追加する必要があります リポジトリを作成してから、以下に示すようにSSLHをインストールします。

$ sudo dnf install epel-release
$ sudo dnf install sslh

Fedora

$ sudo dnf install sslh

デフォルトのリポジトリで使用できない場合は、ここで説明されているように、SSLHを手動でコンパイルしてインストールできます。 。

ApacheまたはNginxWebサーバーを構成する

すでにご存知のように、ApacheおよびNginx Webサーバーはすべてのネットワークインターフェイス(つまり、 0.0.0.0:443)でリッスンします。 )デフォルトで。この設定を変更して、ローカルホストインターフェースでのみリッスンするようにウェブサーバーに指示する必要があります(つまり、 127.0.0.1:443 またはlocalhost:443

これを行うには、Webサーバー(nginxまたはapache)構成ファイルを編集して、次の行を見つけます。

listen 443 ssl;

そして、次のように変更します:

listen 127.0.0.1:443 ssl;

ApacheでVirutalhostsを使用している場合は、それも変更していることを確認してください。

VirtualHost 127.0.0.1:443

構成ファイルを保存して閉じます。サービスを再起動しないでください。まだ終わっていません。

SSLHの構成

ローカルインターフェイスでのみリッスンするようにWebサーバーを作成したら、SSLH構成ファイルを編集します。

$ sudo vi /etc/default/sslh

次の行を見つけます:

Run=no

そして、次のように変更します:

Run=yes

次に、少し下にスクロールして次の行を変更し、SSLHが使用可能なすべてのインターフェイスのポート443でリッスンできるようにします(例:0.0.0.0:443

DAEMON_OPTS="--user sslh --listen 0.0.0.0:443 --ssh 127.0.0.1:22 --ssl 127.0.0.1:443 --pidfile /var/run/sslh/sslh.pid"

どこで、

  • --user sslh :この指定されたユーザー名で実行する必要があります。
  • --listen 0.0.0.0:443 :SSLHはポート443でリッスンしています 利用可能なすべてのインターフェースで。
  • --sshs 127.0.0.1:22 :SSHトラフィックをポート22にルーティングします ローカルホストで。
  • --ssl 127.0.0.1:443 :HTTPS/SSLトラフィックをポート443にルーティングします ローカルホストで。

ファイルを保存して閉じます。

最後に、sslhを有効にして開始します 変更を更新するサービス。

$ sudo systemctl enable sslh
$ sudo systemctl start sslh

テスト

SSLHデーモンが443をリッスンしているかどうかを確認します 。

$ ps -ef | grep sslh 
sslh 2746 1 0 15:51 ? 00:00:00 /usr/sbin/sslh --foreground --user sslh --listen 0.0.0.0 443 --ssh 127.0.0.1 22 --ssl 127.0.0.1 443 --pidfile /var/run/sslh/sslh.pid
sslh 2747 2746 0 15:51 ? 00:00:00 /usr/sbin/sslh --foreground --user sslh --listen 0.0.0.0 443 --ssh 127.0.0.1 22 --ssl 127.0.0.1 443 --pidfile /var/run/sslh/sslh.pid
sk 2754 1432 0 15:51 pts/0 00:00:00 grep --color=auto sslh

これで、ポート443を使用してSSH経由でリモートサーバーにアクセスできます。 :

$ ssh -p 443 [email protected]

出力例:

[email protected]'s password: 
Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-55-generic x86_64)

* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage

System information as of Wed Aug 14 13:11:04 IST 2019

System load: 0.23 Processes: 101
Usage of /: 53.5% of 19.56GB Users logged in: 0
Memory usage: 9% IP address for enp0s3: 192.168.225.50
Swap usage: 0% IP address for enp0s8: 192.168.225.51

* Keen to learn Istio? It's included in the single-package MicroK8s.

https://snapcraft.io/microk8s

61 packages can be updated.
22 updates are security updates.


Last login: Wed Aug 14 13:10:33 2019 from 127.0.0.1

見る?デフォルトのSSHポート22であっても、SSH経由でリモートサーバーにアクセスできるようになりました。 ブロックされています。上記の例でわかるように、私はhttpsポート443を使用しました SSH接続用。また、同じポート443を使用できます openVPN接続の場合も。

Ubuntu 18.04 LTSサーバーでSSLHをテストしましたが、上記のように正常に機能しました。保護されたローカルエリアネットワークでSSLHをテストしたので、セキュリティの問題を認識していません。本番環境で使用している場合は、下のコメントセクションでSSLHを使用することの長所と短所をお知らせください。

詳細については、以下のGitHubの公式ページを確認してください。


Linux
  1. SSHトンネリングを設定する方法

  2. Sshサーバーの接続タイムアウト?

  3. CentOSとRedHatのSSHポートを変更する

  1. LinuxでSSHポートを変更する方法

  2. ssh 用の teamviewer のようなツール?

  3. 特定の IP とポートをトレースする

  1. Linuxで上書きせずに同じファイルを読み書きしますか?

  2. SSHとホームディレクトリのアクセス許可?

  3. Linux用の5つの最高のSSHおよびFTPAndroidアプリ