互联网世界并不安全。只要你买了一台公网 IP 的云服务器,不出 10 分钟,各种扫描器和暴力破解机器人就会找上门来。

如果你刚拿到一台全新的 Ubuntu 或 CentOS 服务器,不要急着装跑环境,请务必先做完以下几步基础加固。这些步骤只需要 10 分钟,却能帮你挡住 90% 以上的自动攻击。

1. 禁用 Root 直接登录

Root 权限太大,一旦密码被爆破成功,服务器就彻底沦陷了。我们应该创建一个普通用户,需要时再用 sudo 提权。

首先创建新用户并赋予 sudo 权限:

1
2
adduser deployer
usermod -aG sudo deployer

然后配置该用户的 SSH 公钥登录:

1
2
3
4
5
# 在本地机器上生成密钥对(如果还没有的话)
ssh-keygen -t ed25519 -C "[email protected]"

# 将公钥复制到服务器
ssh-copy-id -i ~/.ssh/id_ed25519.pub deployer@YOUR_SERVER_IP

最后修改 SSH 配置文件:vim /etc/ssh/sshd_config

1
2
3
PermitRootLogin no
PasswordAuthentication no # 禁用密码登录,强制使用密钥
PubkeyAuthentication yes

修改完成后重启 SSH 服务:systemctl restart sshd

重要提醒: 在关闭密码登录之前,务必确认密钥登录已经可以正常工作!否则你可能会把自己锁在服务器外面。建议保留一个已打开的终端窗口,直到测试通过。

2. 更改默认的 SSH 端口

端口 22 是全网机器人的重点关照对象。把它改成一个高端口(比如 22022),可以挡住 90% 的低级自动扫描脚本。

同样是在 /etc/ssh/sshd_config 中修改:

1
Port 22022

重启 SSH 后,之后登录就需要指定端口了:

1
ssh -p 22022 deployer@YOUR_SERVER_IP

3. 配置防火墙 (UFW)

千万别让服务器处于”裸奔”状态。以 Ubuntu 的 UFW 为例,原则是:默认拒绝所有入站,仅开放需要的端口

1
2
3
4
5
6
ufw default deny incoming
ufw default allow outgoing
ufw allow 22022/tcp # 刚才修改的 SSH 端口
ufw allow 80/tcp # HTTP
ufw allow 443/tcp # HTTPS
ufw enable

验证防火墙状态:ufw status verbose

进阶防御:安装 Fail2ban

仅仅改端口还不够,对于持续攻击同一端口的暴力破解,我们需要 Fail2ban。它会监控日志,发现某个 IP 短时间内多次尝试失败后,自动将其加入防火墙黑名单。

1
apt install fail2ban -y

创建一个本地配置覆盖默认值:

1
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

编辑 jail.local,重点配置 SSH 防护:

1
2
3
4
5
6
[sshd]
enabled = true
port = 22022 # 改为你的实际 SSH 端口
maxretry = 3 # 3 次失败即封禁
bantime = 3600 # 封禁 1 小时
findtime = 600 # 10 分钟内的失败计入累计

启动并设置开机自启:

1
2
systemctl enable fail2ban
systemctl start fail2ban

查看封禁记录:fail2ban-client status sshd

遗漏就会后悔:开启审计日志

服务器被入侵后,如果没有日志,你根本无从查起发生了什么。建议开启命令审计:

1
2
# 在 /etc/profile 末尾添加
export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "[$(whoami)]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//") [$RETRN_VAL]"'

这会在 syslog 中记录每个用户执行的每条命令,出事后有迹可循。

自动安全更新

软件漏洞每天都在被发现。配置无人值守的安全更新,可以避免你遗忘更新导致的漏洞:

1
2
apt install unattended-upgrades -y
dpkg-reconfigure --priority=low unattended-upgrades

总结

安全无小事。这简单的几步只需要 10 分钟,却能帮你免去日后服务器被植入挖矿木马、沦为肉鸡的巨大麻烦。敬畏每一行代码,也敬畏互联网的黑暗森林法则——你不主动加固,就有人帮你”加固”。