我的博客

新买的 Linux 服务器,我会先做这 10 件事

每次拿到新服务器,我都会先按这份清单初始化一遍,再开始部署业务。以 Ubuntu 为例,其他发行版命令略有不同,思路是一样的。

1. 更新系统

sudo apt update && sudo apt upgrade -y

云厂商的镜像往往不是最新的,先把已知漏洞补上。

2. 创建普通用户

日常操作不要用 root:

adduser deploy
usermod -aG sudo deploy

3. 配置 SSH 密钥登录

在自己的电脑上执行:

ssh-copy-id deploy@服务器IP

然后确认 ssh deploy@服务器IP 不需要输入密码就能登录。

4. 禁用密码登录

编辑 /etc/ssh/sshd_config:

PasswordAuthentication no
PermitRootLogin no

重启 SSH 服务前,保持当前窗口不要关,另开一个窗口测试能否登录。

5. 防火墙

云服务器的安全组是第一道防线,只放行 22、80、443。系统内再加一层:

sudo ufw allow OpenSSH
sudo ufw allow 80,443/tcp
sudo ufw enable

6. 设置时区

sudo timedatectl set-timezone Asia/Shanghai

很多镜像默认是 UTC,日志时间和定时任务都会差 8 小时。

7. 确认时间同步

timedatectl status

看到 System clock synchronized: yes 即可。时间不准会导致 HTTPS 证书校验、接口签名等各种奇怪的问题。

8. 添加 Swap

小内存服务器一定要加,防止安装依赖或构建时内存不足导致进程被杀。具体命令见我的另一篇文章《一台 2 核 2G 的云服务器,稳稳跑起多个网站》。

9. 安装 fail2ban

sudo apt install fail2ban -y

默认配置就会对 SSH 暴力破解进行封禁。即使已经禁用了密码登录,它也能减少日志里大量的无效登录记录。

10. 开启自动安全更新

sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure -plow unattended-upgrades

只自动安装安全更新,不会升级大版本,比较稳妥。

最后

做完这些,再执行一次 sudo reboot,确认重启后 SSH、防火墙、Swap 都正常。之后才开始安装 Node、Nginx 和部署业务。