每一个玩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了。
网友评论