云服务器初始化安全加固实战
刚买的云服务器就像刚拿到钥匙的毛坯房——能住,但门锁还没换。拿到 root 密码的那一刻,安全加固就该提上日程。下面这套初始化流程适用于 Ubuntu、CentOS、openEuler 等主流 Linux 发行版,照着做一遍约半小时,就能把一台“裸奔”的服务器加固到可上线水平。
一、先更新系统补丁
新机器的第一件事永远是打补丁,把已知漏洞先堵上:
# Ubuntu/Debian
sudo apt update && sudo apt upgrade -y
# CentOS/RHEL/openEuler
sudo yum update -y # 或 dnf update -y
更新后如果内核有升级,重启一次让新内核生效。
二、禁用密码登录,改用 SSH 密钥
密码登录是暴力破解的重灾区,密钥登录才是正解:
- 在本地电脑生成密钥对:
ssh-keygen -t ed25519 -C "my-server" - 把公钥(.pub 文件内容)追加到服务器
~/.ssh/authorized_keys,并设置权限:chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys - 编辑
/etc/ssh/sshd_config,修改以下三项:
PasswordAuthentication no
PermitRootLogin prohibit-password
PubkeyAuthentication yes
- 重启 SSH 服务:
systemctl restart sshd - 先开一个新终端用密钥登录验证成功,再断开当前会话,避免把自己锁在门外。
三、配置安全组与防火墙,只放行业务端口
云平台的安全组是第一道防线:入方向默认全部拒绝,只放行必需端口,例如 SSH(22,建议限制来源 IP)、HTTP(80)、HTTPS(443)。服务器内部再用系统防火墙做第二层:
# Ubuntu
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw enable
# CentOS/openEuler
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
用 ss -tlnp 定期检查实际在监听的端口,只保留业务必需的。
四、新建普通用户,日常不用 root
root 权限太大,日常操作应当使用普通用户加 sudo:
sudo useradd -m -s /bin/bash ops
sudo passwd ops
sudo usermod -aG sudo ops # Debian/Ubuntu
# CentOS 系用 wheel 组:usermod -aG wheel ops
并把该用户的公钥同样配置好,实现全程密钥登录。
五、给小内存实例加上 Swap
1 核 2G 的小实例在编译、跑容器时很容易内存耗尽被 OOM Killer 干掉,加一块 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/fstab
再把 vm.swappiness 调低(如 10),让系统优先使用物理内存,Swap 只做应急。
六、关闭不需要的服务
默认安装的系统常带着一些用不上的服务,每多一个都是攻击面:
systemctl list-unit-files --type=service | grep enabled
sudo systemctl disable --now rpcbind postfix # 按需取舍
关完再用 ss -tlnp 确认一遍监听端口。
七、其他值得顺手做的加固
- 安装 fail2ban,自动封禁频繁输错密码的 IP;
- 开启自动安全更新(如 Ubuntu 的 unattended-upgrades);
- 考虑把 SSH 默认 22 端口换成高位端口,减少被扫描器骚扰;
- 定期查看登录日志:
last、lastb,发现异常 IP 及时拉黑; - 重要数据做好定期备份,加固做得再好也替代不了备份。
写在最后
安全加固没有一劳永逸,核心思路就两条:缩小攻击面(关端口、关服务、禁用密码)和纵深防御(安全组 + 防火墙 + 密钥 + 审计层层设防)。新服务器上线前花半小时走完这套流程,后面能省掉无数个凌晨被告警短信吵醒的夜晚。
- 点赞
- 收藏
- 关注作者
评论(0)