努力
加油

云服务器Ubuntu系统安装后需要做哪些基础配置?

拿到一台全新的云服务器(ECS/CVM/轻量应用服务器等),装好 Ubuntu 系统后,别急着部署业务。作为运维或开发者,第一步永远是“加固”和“优化”。这不仅是安全要求,也是为了保证后续服务运行的稳定性。

以下是我总结的一套标准基础配置流程,按优先级排序,涵盖了从安全到性能的关键点。

1. 创建非 root 用户并配置 sudo 权限

这是最重要的一步。 永远不要直接用 root 账号进行日常操作,尤其是远程登录。

  • 创建新用户:假设用户名为 devops
    adduser devops
    # 输入密码,其他信息直接回车跳过即可
  • 赋予 sudo 权限:
    usermod -aG sudo devops
  • 测试切换:
    su - devops
    sudo ls /root

    如果能列出 /root 目录内容,说明权限配置成功。

2. SSH 密钥登录与禁用密码登录

为了防暴力破解,必须禁用密码登录,改用 SSH 密钥对。

  • 在本地机器生成密钥(如果已有可跳过):
    ssh-keygen -t ed25519 -C "your_email@example.com"
  • 将公钥上传到服务器:
    ssh-copy-id devops@<你的服务器IP>
  • 修改 SSH 配置文件:
    编辑 /etc/ssh/sshd_config:

    PubkeyAuthentication yes      # 确保开启公钥认证
    PasswordAuthentication no     # 禁用密码登录
    PermitRootLogin no            # 禁止 root 直接远程登录
  • 重启 SSH 服务生效:
    systemctl restart sshd

    注意:修改前务必确认你能通过密钥登录成功,否则把自己锁在外面很麻烦。

3. 系统更新与安全补丁

保持内核和软件包为最新状态,修复已知漏洞。

sudo apt update && sudo apt upgrade -y
sudo apt dist-upgrade -y

如果是生产环境,建议先在小版本测试机验证兼容性,再全量推送。

4. 配置防火墙 (UFW)

Ubuntu 默认使用 UFW(Uncomplicated Firewall)。云厂商通常有安全组,但主机层面的 UFW 是最后一道防线。

  • 启用 UFW:
    sudo ufw enable
  • 设置默认策略(拒绝所有入站,允许所有出站):
    sudo ufw default deny incoming
    sudo ufw default allow outgoing
  • 开放必要端口(以 HTTP/HTTPS 为例):
    sudo ufw allow 80/tcp
    sudo ufw allow 443/tcp
    sudo ufw allow 22/tcp       # 如果你改了 SSH 端口,这里要改对应端口
  • 查看状态:
    sudo ufw status verbose

5. 安装 Fail2ban 防止暴力破解

即使禁用了密码登录,SSH 端口依然暴露在公网,Fail2ban 可以监控日志,封禁频繁尝试登录的 IP。

sudo apt install fail2ban -y

默认配置基本够用。如果需要自定义(如修改屏蔽时间、阈值),复制模板文件:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

在 [sshd] 部分调整 maxretry 和 bantime。

6. 时区与 NTP 同步

服务器时间不准会导致日志混乱、SSL 证书报错、分布式任务调度失败等问题。

  • 检查当前时区:
    timedatectl status
  • 设置为上海时区:
    sudo timedatectl set-timezone Asia/Shanghai
  • 确保 NTP 同步正常(Ubuntu 18.04+ 默认使用 systemd-timesyncd):
    timedatectl timesync-status

    如果显示 NTP synchronized: yes,则无需额外操作。

7. 磁盘挂载与文件系统优化

如果是数据盘,需要手动挂载。推荐使用 ext4 或 xfs。

  • 查看磁盘:
    lsblk
    df -h
  • 格式化并挂载(假设 /dev/vdb 是新磁盘):
    sudo mkfs.ext4 /dev/vdb
    sudo mkdir /data
    sudo mount /dev/vdb /data
  • 设置开机自动挂载:
    获取 UUID:

    blkid /dev/vdb

    编辑 /etc/fstab,添加一行:

    UUID=你的UUID值 /data ext4 defaults,nofail 0 2

    nofail 参数很重要,防止因磁盘故障导致系统无法启动。

8. 内核参数调优(可选,针对高并发场景)

对于 Web 服务器或数据库服务器,适当调整 TCP 连接复用和文件句柄限制。

编辑 /etc/sysctl.conf,追加:

# 增加最大文件句柄数
fs.file-max = 65535

# TCP 连接优化
net.core.somaxconn = 1024
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_tw_reuse = 1

使配置生效:

sudo sysctl -p

9. 安装常用工具集

方便后续调试和维护:

sudo apt install curl wget git htop net-tools vim unzip zip -y
  • htop:比 top 更直观的资源监控。
  • net-tools:包含 ifconfig, netstat 等经典命令(虽然被 iproute2 替代,但很多老脚本还在用)。

10. 定期备份与快照策略

  • 系统快照:在云厂商控制台设置定时快照策略(如每天凌晨 2 点),保留最近 7-14 天的快照。
  • 数据备份:重要数据不要只依赖云盘,应定期备份到 OSS/S3 或其他对象存储。

避坑指南 & 注意事项

  1. 不要随意关闭 Swap:虽然有些教程说 SSD 时代不需要 Swap,但在内存突发不足时,Swap 能防止 OOM(Out of Memory)导致进程直接崩溃。建议保留少量 Swap(如 1-2GB),并通过 vm.swappiness=10 降低使用倾向。
  2. 最小化原则:只安装必要的软件和服务。每多一个服务,就多一个潜在的攻击面。
  3. 日志轮转:确保 logrotate 正常运行,避免日志文件撑爆磁盘。
  4. 监控告警:基础配置完成后,建议接入云厂商自带的监控(如 CloudMonitor/Prometheus),设置 CPU、内存、磁盘 IO 的告警阈值。

完成以上步骤后,你的 Ubuntu 服务器就具备了企业级的基础安全性和稳定性,可以开始部署具体业务了。