云网牛站
所在位置:首页 > Linux云服务器 > 在Linux操作系统上安装SSLH并介绍配置使用SSLH的方法

在Linux操作系统上安装SSLH并介绍配置使用SSLH的方法

2019-08-15 10:34:47作者:戴进稿源:云网牛站

本文介绍在Linux操作系统上安装SSLH的方法,可装在Debian、Ubuntu、Arch Linux、RHEL、CentOS、Fedora版本上,同时介绍配置使用SSLH的方法。SSLH允许我们在Linux系统上的443端口上运行多个程序/服务,因此,你可以使用同一端口同时使用SSL和SSH,如果你遇到大多数端口被防火墙阻止的情况,你可以使用SSLH访问远程服务器,这个简短的文章描述了如何在类Unix操作系统中使用SSLH共享https、ssh的相同端口,SSLH-为HTTPS、SSH和OpenVPN共享相同的端口。

 

安装SSLH

SSLH适用于大多数Linux发行版,因此你可以使用默认包管理器进行安装。

在Debian、Ubuntu和衍生系统上,运行:

$ sudo apt-get install sslh

安装SSLH时,将提示你是要将sslh作为服务从inetd运行,还是作为独立服务器运行,每种选择都有其自身的优点,由于每天只有少量连接,因此最好从inetd运行sslh以节省资源,另一方面,对于许多连接,sslh应作为独立服务器运行,以避免为每个传入连接生成新进程。

在Linux操作系统上安装SSLH并介绍配置使用SSLH的方法

在Arch Linux和Antergos、Manjaro Linux等衍生系统上,使用Pacman进行安装,如下所示:

$ sudo pacman -S sslh

在RHEL、CentOS上,你需要添加EPEL存储库,然后安装SSLH,如下所示:

$ sudo yum install epel-release

$ sudo yum install sslh

在Fedora上:

$ sudo dnf install sslh

参考:离线安装Fedora应用程序的方法(使用DNF包管理器中包含的离线功能)

 

配置Apache或Nginx Web服务器

如你所知,Apache和Nginx Web服务器默认会监听所有网络接口(即0.0.0.0:443),我们需要更改此设置以让Web服务器仅侦听localhost接口(即127.0.0.1:443或localhost:443)。

为此,请编辑webserver(nginx或apache)配置文件并找到以下行:

listen 443 ssl;

并将其更改为:

listen 127.0.0.1:443 ssl;

如果你在Apache中使用Virutalhosts,请确保你也改变了它:

VirtualHost 127.0.0.1:443

保存并关闭配置文件,不要重新启动服务。

 

配置SSLH

使网络服务器仅在本地接口上侦听后,编辑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"

注:

1、-user sslh:需要在此指定的用户名下运行。

2、-listen 0.0.0.0:443:SSLH正在所有可用接口上侦听443端口。

3、-sshs 127.0.0.1:22:将SSH流量路由到localhost上的22端口。

4、-ssl 127.0.0.1:443:将HTTPS/SSL流量路由到localhost上的443端口。

保存并关闭文件。

最后,启用并启动sslh服务以更新更改:

$ sudo systemctl enable sslh

$ sudo systemctl start sslh

 

测试使用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 sk@192.168.225.50

样本输出:

在Linux操作系统上安装SSLH并介绍配置使用SSLH的方法

即使默认的SSH端口22被阻止,我现在也可以通过SSH访问远程服务器。正如你在上面的示例中所看到的,我使用https端口443进行SSH连接,此外,我们也可以使用相同的443端口进行openVPN连接(参考:在Ubuntu 18.04/16.04上安装和配置OpenVPN Server的简便方法)。

注:我在Ubuntu 18.04 LTS服务器上测试了SSLH,它运行得很好,同时我在受保护的局域网中测试了SSLH,成效相当的好。

 

相关主题

安装和使用EasySSH在Linux上设置SSH连接的方法

精选文章
热门文章