首页 >PC >正文

使用内网穿透的思路保护你脆弱的云服务器

每一个玩nas的玩家做后都会买一个台属于自己的云服务器!但大部份的nas玩家都不是网络安全专家,看着ssh日志上万条爆破纪录实属头疼。有没有什么办法搞定这些凡人攻击者了。有!那就是断网!只要没有网黑客就攻击不了我!

当然这个断网是有限度的断网,不是真的断网。真断网了,还买云服务器干嘛!花大价钱买云服务器不就是眼馋固定公网ip吗?

我们都知道家庭内网在没有特殊配置的情况下,是无法被外部主动访问的。因为内网和外网之间还有一层NAT,所以处于内网设备是很难被通过外部网络黑掉。要想访问内网中的设备,要么内网设备主动和外部设备建立连接,例如nps和frp这种有中心服务器的内网穿透工具。要么在NAT上打一个洞,建立一个隧道和内网设备通讯,利于p2p中的nat穿透。

类似的,云服务器也有这种东西,只不过他叫做防火墙,一些云服务器也叫做安全组。

通过防火墙阻止访问一些敏感端口,比如ssh的22端口,一些web控制面板的访问端口等等。

那我们要怎么控制我们的服务器了?像NAT穿透一样在防火墙上打个洞安个隧道,只不过这个隧道是加密的。然后我们通过这个加密隧道和服务器安全通讯。

这样做的目的是为了提高黑客的攻击成本,如果要攻击的话,先扫除端口,尤其是隧道一般用udp链接扫描难度很大,然后暴力破解隧道密码,隧道密码是随机生成爆破难度也很大。爆破好后才能爆破ssh。除非专门针对你,否则脚本小子是不会去攻击这种安全规则比较多的服务器的。

下面的是给云服务器配置防火墙和安装隧道的教程

首先配置云服务的防火墙这里以腾讯云为例子,其他云服务器都差不多。

在云服务器中找到防火墙

使用内网穿透的思路保护你脆弱的云服务器

我这个是已经配置好的规则,所以没有开放http协议使用的80/443,ssh使用22端口,远程桌面用的3389端口。因为我们不需要把远程控制端口暴露到公网,所以要删除开放22端口和3389端口的规则。80/443端口可以根据自己的需求决定留还是删。如果用不到我建议删除80/443的开放规则。

使用内网穿透的思路保护你脆弱的云服务器

使用内网穿透的思路保护你脆弱的云服务器

云服务器的防火墙默认不开放其他端口的,所以需要自己开放自己需要的端口。比如我需要开放8024端口给nps使用,就得手动开放。

填上需要的开放的端口号,协议,策略选择允许,来源这里,指的是客户端的公网ip。如果要像全部来源开放就填入“0.0.0.0/0”,如果需要指定一个来源ip才能访问,比如我只希望1.2.3.4能访问,那就填入“1.2.3.4/32”

使用内网穿透的思路保护你脆弱的云服务器

因为我们把公网的ssh端口给禁用了,所以需要建立一个安全隧道来控制服务器。

ps:要先配置好隧道后才在防火墙禁用ssh公网端口,同时在防火墙开放安全隧道通讯的端口

这里我使用wireguard作为隧道工具,因为他使用比较简单。命令稍微改一些抄我的就可以了。基本上新的linux发行版都集成了wireguard的内核模块。这里以ubuntu系统为例。

使用以下命令安装wireguard工具

sudo apt update

sudo apt install wireguard

进入wireguard工作目录,生成服务器密钥

cd /etc/wireguard/

umask 077

sudo wg genkey | tee server_privatekey | wg pubkey > server_publickey

生成客户端的密钥

sudo wg genkey | tee client01_privatekey | wg pubkey > client01_publickey

由于一个客户端对应一个密钥,如果需要多个客户端就生生成多个密钥,比如我在这里生成了02号客户端。

sudo wg genkey | tee client02_privatekey | wg pubkey > client02_publickey

生成好密钥后可以使用cat命令查看服务器和客户端的私钥和公钥

比如我在这里是使用cat server_privatekey命令查看服务器的私钥,输出为就是私钥。

IfT/gU5qVBQEXamWoUzNUNpRDkpS4OKM+P+csdPKXNE=

用cat server_publickey命令查看服务器的公钥,输出的公钥

dSoxLpW5ue9/lK4H03/TQije1yuqO8jgVrK1AbGLSTw=

配置文件编写

在/etc/wireguard目录下,新建里一个文件wg0.conf,作为服务器的配置文件。

vim wg0.conf

文件的内容可以参看下面的配置文件

[Interface]

# 服务器私钥

PrivateKey = IfT/gU5qVBQEXamWoUzNUNpRDkpS4OKM+P+csdPKXNE=

#这个是隧道的ip地址,选一个不冲突的

Address = 10.78.0.1

#这是隧道的通讯端口,选一个不冲突的udp端口号

ListenPort = 51820

[Peer]

# 客户端1公钥

PublicKey = sBa18kmT/+xnJTQWXy49qGume3J+Po0cF15jx4DFCFI=

#客户端的ip地址,选一个不冲突的。

AllowedIPs = 10.78.0.2/32

Peer]

# 客户端2公钥

PublicKey = 4yud1fBPe5Nptri96gdG79WAOzgclN3HnWhEt0ybAmQ=

AllowedIPs = 10.78.0.3/32

然后使用命令启动隧道

sudo wg-quick up wg0

用命令让隧道开机自启动

sudo systemctl enable wg-quick@wg0

客户端配置文件编写,其实这个和服务器端的也差不多。可以参考我写的。

[Interface]

#客户端1的私钥

PrivateKey = IzbPK7agRtB9Ca2hYvJ6oIRCHcqG3ViUS8JXQxVOato=

#客户度的ip地址,这个地址必须和服务器配置里的客户端1的地址一样

Address = 10.78.0.2/32

[Peer]

#服务器的公钥

PublicKey = dSoxLpW5ue9/lK4H03/TQije1yuqO8jgVrK1AbGLSTw=

#服务器隧道的ip,必须和服务器配置文件中的一样

AllowedIPs = 192.168.77.0/24

#服务器的公网ip和隧道监听的端口

Endpoint = 1.2.3.4:51820

PersistentKeepalive = 25

把这个文件导入到客户端就可以使用了

使用内网穿透的思路保护你脆弱的云服务器

这时候我们就可以在防护墙关闭22端口和一些其他敏感端口的访问了。直接通过安全隧道访问,比如我这里的服务器隧道地址是10.78.0.1。直接访问10.78.0.1:22就可以ssh了。

网友评论

验证码 换一张
取 消
暂无评论...
三日内热门评论文章
为您推荐
  • 相关阅读
  • 业界资讯
  • 手机通讯
  • 电脑办公
  • 新奇数码
  • 软件游戏
  • 科学探索