ssh というと22番ポートを利用するものだが、環境によっては利用できない事がある。
そういった場合だと443番ポート(SSL)を利用する場合が多いが、Webサーバーの場合だとすでに https で使用している場合が多い。そんなとき、ssh と ssl を 443番ポートで同居させて、それぞれのパケットのときは適切に割り振りをしてくれるリバースプロキシのような動作をしてくれるのが『SSLH』になる。
[root@localhost ~]# yum -y install sslh |
まず、Webサーバーで443番ポートを127.0.0.1にのみ許可してやり、外部からアクセス時の443ポートを開放する。
[root@localhost ~]# vi /etc/httpd/conf.d/ssl.conf |
Listen 127.0.0.1:443 https ←編集 |
SSLHの設定
「/etc/sslh.cfg」で、listenするhostに受付をするインターフェイスのIPアドレス(もしくはホスト名)を入力する。
[root@localhost ~]# vi /etc/sslh.cfg |
... # Change hostname with your external address name. listen: ( { host: "NICのIPアドレス"; port: "443"; } ←編集 ); ... |
[root@localhost ~]# systemctl start sslh |
[root@localhost ~]# systemctl enable sslh |
ssh の疎通確認
[root@localhost ~]# ssh NICのIPアドレス -p443 |
httpsの疎通確認
[root@localhost ~]# curl https://hogehoge.com -k |
設定ファイル使うと、/etc/default より管理が楽になります。
[root@localhost ~]# vi /etc/default/sslh |
DAEMON_OPTS="--user sslh -F /etc/sslh --pidfile /var/run/sslh/sslh.pid" |
[root@localhost ~]# vi /etc/sslh |
listen: ( { host : "NICのIPアドレス"; port :443 } ); protocols: ( {name: "ssh" ; host: "127.0.0.1"; port: "22" ;}, {name: "http" ; host: "127.0.0.1"; port: "443"; }, ) |
IPv4のポート443は今はインターネットそのものになりつつあります。全ての通信が443ポートでおこなわれつつあるとおもっています。
443ポートでVPNを貼ったりsshしたりSocksProxy作ったり通信内容を見られないというのはとても重要なファクタに成りつつあります。