服务器初始化清单:先留好退路,再收紧入口
整理一份适合个人站的 Linux 服务器初始化顺序,重点是密钥登录、防火墙和可恢复性。
新服务器最危险的时刻,往往是刚拿到权限、还没把访问方式确认清楚的时候。网上的初始化命令很多,但照着一口气执行,最容易发生的不是“更安全”,而是把自己关在门外。
所以这份清单的顺序是:先确认控制台和回退方式,再创建日常用户,验证密钥登录,最后才关闭旧入口。
更新系统,但别让升级失去控制
先查看发行版和待更新包,再决定是否升级。对正在运行服务的机器,内核或关键库更新后可能需要重启,不适合不看输出就塞进自动脚本。
sudo apt update
apt list --upgradable
sudo apt upgrade
sudo timedatectl set-timezone Asia/Shanghaicurl、git、tmux、htop 等工具按需要安装即可。初始化清单不是软件收藏夹,装得越多,后续需要更新的东西也越多。
先让普通用户能登录
日常操作不需要直接使用 root。可以创建一个普通用户并加入 sudo 组,然后把公钥写入它自己的 authorized_keys。
sudo adduser siteops
sudo usermod -aG sudo siteops
sudo install -d -m 700 -o siteops -g siteops /home/siteops/.ssh
sudo install -m 600 -o siteops -g siteops \
/root/.ssh/authorized_keys /home/siteops/.ssh/authorized_keys不要马上退出当前会话。另开一个终端,确认新用户能用密钥登录,也能执行 sudo,再继续改 SSH 配置。
SSH 配置要分步骤验证
目标是关闭密码认证和 root 远程登录:
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin no修改后先检查语法,再平滑重载服务:
sudo sshd -t
sudo systemctl reload ssh改 SSH 端口可以减少日志里的自动扫描噪声,但不能替代密钥认证,也不是主要安全措施。如果确实要改,必须先同步云平台安全组和主机防火墙,并保留一个已经登录的会话用于回退。
防火墙只开放真正需要的入口
个人网站通常需要 SSH、HTTP 和 HTTPS。应用容器的 3000、3001 端口如果只由本机 Nginx 访问,就不应直接暴露到公网。
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose启用前要确认 SSH 规则已经存在。云厂商安全组和 UFW 是两层配置,排查连接失败时两边都要看。
fail2ban 可以减少重复尝试和日志噪声,但在已经关闭密码登录的前提下,它只是补充。更重要的是保管好私钥、及时安装安全更新,并限制管理端和敏感接口的访问。
最后才是部署应用
服务器基础配置完成后,还要准备持久化目录、环境变量、备份位置和回滚方案。Docker 容器能重建,数据不一定能。上线前至少确认一次:删掉当前容器后,应用是否能用已有镜像和备份恢复。
安全配置没有一条“执行完就永久安全”的命令。能持续更新、知道哪些端口在监听、保留可用备份,通常比追求一份看起来很长的加固清单更有用。