首先推荐跟着Hantong的帖子里【SSH 安全篇】章节完成基本的安全配置,也可以看【虚拟内网篇(Zerotier)】章节,解释得很到位了。本篇的区别只是用了 iptables-persistent
来管理防火墙。
保护你的小鸡! VPS 安全探讨分享
https://www.nodeseek.com/post-25170-1
在本篇中,我们将介绍如何使用ZeroTier来保护你的VPS小鸡SSH连接。
第一步:安装ZeroTier
从ZeroTier的官方网站下载安装包,然后也注册一个帐号。
https://www.zerotier.com/download/
Debian/Ubuntu一键安装:
curl -s https://install.zerotier.com | sudo bash
安装完成后,你可以使用以下命令来启动和停止ZeroTier服务:
sudo systemctl start zerotier-one.service
sudo systemctl stop zerotier-one.service
为了让ZeroTier在系统启动时自动启动,你还需要启用它:
sudo systemctl enable zerotier-one.service
使用以下命令来查看ZeroTier服务的状态:
sudo systemctl status zerotier-one.service
你的本地(用来ssh的机器)和小鸡都需要安装zerotier,加入到同一个内网。
第二步:加入ZeroTier网络
注册帐号,登陆到 https://my.zerotier.com/
安装并启动ZeroTier服务后,你需要将你的VPS加入到一个ZeroTier网络中。你可以使用以下命令来加入一个网络:
sudo zerotier-cli join ################
其中,################
是你的ZeroTier网络的ID,记得要替换!
在 https://my.zerotier.com/ 里拉到 Members 下面,给你的小鸡打勾(没有出现的话等几分钟),允许其进入你的zt内网。
之后要是你想要离开一个网络,可以使用以下命令:
sudo zerotier-cli leave ################
查看、列出你的VPS当前加入的所有ZeroTier网络:
sudo zerotier-cli listnetworks
第三步:查看节点ID
你可以使用以下命令来查看你的VPS在ZeroTier网络中的节点ID:
sudo zerotier-cli info
sudo zerotier-cli status
第四步:配置iptables persistent来限制IP为ZeroTier的IP段
在 https://my.zerotier.com/ 里 Advanced 下面 Managed Routes 里选择你的ip地址段,不要和你现有的重合就行。这里我们假设你选了 172.30.0.0/16
首先,你需要在你的VPS上安装iptables persistent:
apt install -y iptables-persistent
然后,编辑/etc/iptables/rules.v4
文件,并将以下内容放入:
*filter
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -j ACCEPT
# 允许建站
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
# 允许SSH,这里假设端口是22
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
# 允许ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
-A INPUT -j REJECT
-A FORWARD -j REJECT
COMMIT
使用iptables-persistent的话,这个配置将在系统启动时自动加载。但因为我们现在并不需要重启系统,所以我们需要手动加载这个配置:
iptables-restore < /etc/iptables/rules.v4
如果你的服务器也支持IPv6,你还需要编辑/etc/iptables/rules.v6
文件。
如果上面成功,不破坏你的ssh连接(新开一个ssh来测试,不要关掉原来的ssh窗口!),那么恭喜你我们可以继续下面的步骤:
我们只允许来自特定IP段,比如来自你的zerotier网络的 172.30.0.0/16
的SSH连接,你需要在iptables规则中指定这个IP段。
将SSH连接的规则修改为以下内容:
-A INPUT -p tcp -s 172.30.0.0/16 -m state --state NEW --dport 22 -j ACCEPT
只有来自172.30.0.0/16这个IP段的新的SSH连接才会被接受。
然后,将这个新的规则添加到你的/etc/iptables/rules.v4
文件中,然后手动加载新的配置:
iptables-restore < /etc/iptables/rules.v4
这样,你的小鸡就只会接受来自172.30.0.0/16这个IP段的SSH连接了,可以防止未经授权的用户通过SSH连接到你的VPS。
为了防止zt进程中断导致失联,你也可以额外加一个其他小鸡的IP作为跳板。
收藏一下
好帖,学习了
一个跳板太复杂了
@hetray #0
你的小鸡就只会接受来自172.30.0.0/16这个IP段的SSH连接了
直接只允许你的公网IP去连接就行了
真不错啊 收藏了
SSH服务换成SOCKS5服务是不是也可以?