为什么每个站长都需要一份初始化清单
很多个人站长买第一台 VPS 时的心情都是一样的:机房开通邮件一到,立刻用 root 密码登录,装个面板或者一键包,网站能跑起来就算大功告成。至于系统处于什么状态、开了哪些端口、有没有自动更新,一概不知。直到某天服务器被扫描爆破、被挂马、或者磁盘被日志塞满,才回头补课。
其实新服务器到手后的头三十分钟,是决定这台机器未来几个月是否安稳的关键窗口。厂商默认镜像为了让你方便登录,通常开着 root 密码登录、防火墙全放行、软件源还是旧的;直接拿这样的机器上线,等于开着大门迎客。这篇文章给出一份经过实战检验的初始化清单,按顺序做完,一台裸机就能达到可以上线的基本安全基线。每步都说明为什么做,你不需要照抄,理解之后按自己的情况取舍。
第一步:创建普通用户并配置 sudo
永远不要用 root 直接干活。日常登录、改配置、跑脚本都应该用普通用户,需要提权时再用 sudo,这样即使账号被攻破,攻击者拿到的也不是最高权限。登录服务器后先建用户:
adduser webmaster
usermod -aG sudo webmasteradduser 会交互式设置密码和用户信息,第二个命令把用户加入 sudo 组。之后测试一下:用新用户重新登录,执行 sudo whoami,能输出 root 就说明提权正常。后续所有操作都切到这个用户下进行,root 只在极少数场景使用。
第二步:更新系统与软件源
厂商镜像里的软件包停留在发布当天,之后所有安全补丁都欠着。上线前必须先把系统更新到最新,Debian 系和 CentOS 系分别是:
sudo apt update && sudo apt upgrade -y # Debian / Ubuntu
sudo yum update -y # CentOS 7 / Rocky 8 及以后更新完可以顺手安装后续要用的基础工具:curl、wget、htop、iotop、tcpdump、unzip、git,以及文字编辑用的 vim。一次装齐,省得后面用到时再想起来。另外建议开启自动安全更新,Debian 系安装 unattended-upgrades 并启用,至少保证安全补丁不会因为忙碌而长期缺席。
第三步:SSH 加固
新机器默认允许 root 密码登录,这是暴力破解的第一目标。这一步的内容本站有专门文章详细讲过(见《SSH 密钥登录安全加固实战》和《Linux 服务器 SSH 安全加固实战》),这里只列清单要点:生成密钥对、把公钥写入新用户的 authorized_keys、测试密钥能登录后,再修改 sshd_config 关闭密码登录和 root 登录,最后重启 sshd。强烈建议同时部署 Fail2ban 拦截爆破流量,具体规则写法可以参考本站 iptables 与 Fail2ban 那篇文章。
一个容易被忽略的细节:修改 SSH 配置前先开一个新终端保持现有连接,改完重启 sshd 后立刻用新方式登录验证,确认没问题再关闭旧连接。很多站长在这步把自己锁在门外,只能去机房面板里用 VNC 救回来。
如果服务器只有你一个人用,还可以在 sshd_config 里加一行 AllowUsers,只允许指定的用户名登录,其它账号即使存在也无法从远程连接,这一步对防爆破的效果立竿见影。修改默认端口(把 22 换成高位端口)能显著减少无差别扫描流量,但也会带来一点不方便:云厂商安全组要同步放行、自己写脚本时要记得指定端口。我的建议是新机器一开始就改掉,越早改成本越低,等网站跑起来再改反而容易出纰漏。
第四步:设置时区与时间同步
服务器时间不对会导致日志时间错乱、定时任务乱跑、HTTPS 证书校验失败。国内服务器尤其要把时区设对:
sudo timedatectl set-timezone Asia/Shanghai
timedatectl status输出里 Local time 正确、NTP synchronized 为 yes 就说明时间同步正常。如果显示未同步,安装 chrony 并启用,具体配置可以参考本站《Linux 服务器时间同步实战》一文。定时任务、日志切割、证书续期全都依赖准确的时间,这步一分钟的事,别省。
第五步:配置防火墙,只放行必要端口
镜像默认防火墙往往是空的,等于所有端口对公网开放。个人网站服务器只需要 22(SSH)、80(HTTP)、443(HTTPS)三个端口对外,其余全部关闭。以 Ubuntu 的 ufw 为例:
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable注意顺序:先放行 SSH 再执行 enable,否则可能把自己断在外面。如果使用云厂商的安全组,记得安全组和系统防火墙是两层,都要配置。数据库端口 3306、Redis 端口 6379 这类服务端口绝不要直接暴露公网,需要远程访问时走 SSH 隧道或者只允许内网网段。想深入了解 iptables 规则写法可以看本站防火墙实战那篇。
第六步:给低配机器配 Swap
1G、2G 内存的小 VPS 很常见,内存一满,MySQL 或 PHP-FPM 进程可能被系统直接 OOM 杀掉,网站表现为突然 502。给系统加一块 Swap 作为内存的缓冲垫,能显著减少这类问题:
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstabSwap 大小一般是物理内存的 1 到 2 倍,机械盘上 Swap 性能一般,但作为兜底仍然值得。注意不要为了省事把 Swap 文件权限设成 644,否则系统会警告权限不安全。
第七步:挂载数据盘与规划目录
多数 VPS 商默认把系统装在小系统盘上,大容量数据盘需要自己格式化挂载。用 lsblk 查看磁盘列表,把数据盘挂到 /data 之类的目录,网站程序、数据库文件、备份都放这里,和系统盘分离。好处是以后重装系统不影响数据,备份时也可以只备份数据盘。具体分区、格式化、LVM 扩容的操作可以参考本站《Linux 磁盘空间排查与 LVM 在线扩容实战》一文。挂载完成后记得把目录归属给网站运行用户,避免权限问题。
第八步:装上监控与备份
初始化是预防,监控和备份是后手。建议立刻做两件事:一是部署基础监控,把 CPU、内存、磁盘、流量数据采出来,本站有《Docker Compose 搭建服务器监控告警系统》可以照着搭,哪怕先只监控磁盘和内存也有意义;二是把 crontab 里加一条每日备份任务,数据库定时导出、网站目录定时打包,备份策略的完整设计可以参考《个人网站备份策略全解析》。
这两件事都做完,这台服务器才算真正"毕业"。以后每次新买机器,照着这份清单走一遍,三十分钟内就能把一台裸机变成可以放心跑业务的服务器。
验收:上线前花一分钟逐项复查
初始化做完先别急着装网站,花一分钟跑一遍下面的命令逐项确认,再进入部署环节:
sudo whoami # 应输出 root,说明 sudo 提权正常
timedatectl # 时区正确、时间已同步
swapon --show # Swap 已生效
sudo ufw status # 防火墙规则符合预期
apt list --upgradable 2>/dev/null | wc -l # 未升级数量越少越好如果用的是主流云厂商,建议顺手给系统盘打一个快照,之后每次做重要变更前都打一个。快照是比任何备份脚本都省心的保险:真出了问题,几分钟就能把系统恢复到变更前的状态,这个习惯能让你在折腾服务器时底气足很多。日常文件与数据库的定期备份也不能省,具体方案可以参考本站《个人网站备份策略全解析》一文。
最后建议把这份清单变成自己的固定动作:新机器初始化、系统重装后恢复、接手别人的服务器,都先按清单过一遍。做得多了,还可以把重复操作整理成一个初始化脚本放进自己的工具库,下次开新机器一条命令完成大半,再逐项人工确认输出。
结语:清单的价值在于可重复
初始化的每一步单独看都不难,难的是每次都记得做、做得全。把这份清单保存成自己的笔记,或者干脆写成初始化脚本,下次开新机器直接执行,再逐项确认输出,就能保证每台服务器都站在同一条安全基线上。服务器安全没有一劳永逸,但一个扎实的起点,能让后续的维护省心太多。