对于一台暴露在公网上的 VPS,不做安全措施就像是“裸奔”,很容易遭到暴力破解攻击。我们需要在不破坏 Docker 网络的前提下,给系统加上几把锁。
修改 SSH 默认端口(最有效)
黑客的自动化脚本会扫描所有 IP 的 22 端口。换成一个五位数的端口可以挡掉 99% 的暴力攻击。
编辑配置文件:nano /etc/ssh/sshd_config,直接在终端(SSH 窗口)输入以下命令并回车即可:
sudo nano /etc/ssh/sshd_config
找到 #Port 22,去掉 # 并改为 Port 12345(换成 10000-65535 之间的任意数字)。
输入上述命令后,如果系统提示 Password,请输入你的 root 或用户密码(输入时屏幕不会显示字符)。
编辑内容:使用键盘的方向键移动光标,直接输入或删除文字进行修改。
保存退出:
按下 Ctrl + O(写入文件)。
按下 Enter 键确认文件名。
按下 Ctrl + X 退出编辑器。
保存退出后重启
sudo systemctl restart ssh
在修改 sshd_config(尤其是修改端口或禁用密码登录)时,建议保持当前的 SSH 连接不要关闭,并同时开一个新的窗口测试是否能正常登录。如果配置错误导致无法登录,旧的连接可以帮你改回来,否则你可能需要通过 VPS 服务商的 Web 控制台(VNC)进行抢救。
启用防火墙并开放必要端口
如果你用了 Docker,防火墙配置需要特别小心,避免把 Docker 的流量墙掉。
# 安装 UFW
apt install ufw -y
# 默认禁止所有传入,允许所有传出
ufw default deny incoming
ufw default allow outgoing
# 必须放行的端口
ufw allow 80/tcp # HTTP (Caddy 申请证书用)
ufw allow 443/tcp # HTTPS (访问博客用)
ufw allow 12345/tcp # 你的新 SSH 端口 (务必根据上一项修改!)
ufw allow 1080/udp # Hysteria 2 主端口
ufw allow 20000:50000/udp # Hysteria 2 端口跳跃范围
# 启用防火墙
ufw enable
安装 Fail2Ban(自动禁封)
这个工具会自动监控登录日志,如果有人尝试密码错误超过 3 次,直接封锁对方 IP 24 小时。
sudo apt install fail2ban -y
# 使用 tee 写入配置文件(findtime 已包含在 EOF 块内)
sudo tee /etc/fail2ban/jail.local <<EOF
[sshd]
enabled = true
# 注意下面的端口
port = 12345
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
findtime = 10m
bantime = 24h
EOF
# 重启服务使配置生效
sudo systemctl restart fail2ban
执行完代码后,使用以下命令检查 Fail2ban 是否成功监控了 SSH:
sudo fail2ban-client status sshd
如果输出显示 Status for the jail: sshd 且 Currently failed 有数值,说明配置成功。
确认日志文件存在(Debian 12+ 用户注意):
如果你的系统是最新的 Debian 12,可能没有默认的 auth.log。请运行:
ls /var/log/auth.log
如果提示文件不存在,请运行
sudo apt install rsyslog -y
来生成该日志文件,否则 Fail2ban 无法读取登录记录。
万一你自己被封禁了怎么办?
如果你不小心输错 3 次密码导致自己的 IP 被封禁,可以从另一台设备登录或通过服务商的 VNC 控制台执行:sudo fail2ban-client set sshd unbanip <你的IP地址>
例如:
sudo fail2ban-client set sshd unbanip 151.247.129.48
或解封所有被封禁的 IP
sudo fail2ban-client unban --all
查看当前有哪些 IP 被封禁了:
sudo fail2ban-client status sshd
注意: 如果你执行解封命令时提示 IP 151.247.129.48 is not banned,说明该 IP 目前并没有在封禁名单中。
491

被折叠的 条评论
为什么被折叠?



