为什么需要一份清单
服务器暴露在公网的第一分钟就会开始被扫描。多数入侵不是因为高级攻击,而是因为默认配置没改、补丁没打、权限没收紧。本文把 DMIT 云服务器的安全基线整理成一份可勾选的清单,配合《SSH 安全加固》使用。
系统层
- ✅ 安装最新安全补丁:
apt update && apt upgrade -y,并开启自动安全更新(unattended-upgrades) - ✅ 最小化安装:不用的服务一律停用(
systemctl disable --now 服务名) - ✅ 时区与 NTP 同步正确,日志时间才可信
- ✅ 定期重启验证:内核更新后需重启生效,安排维护窗口
账户与权限
- ✅ 禁用 root 密码登录,日常使用普通用户 + sudo
- ✅ SSH 仅密钥认证(见《SSH 加固》)
- ✅ 清理无用账户:
awk -F: '$3==0{print $1}' /etc/passwd应只有 root - ✅ 关键目录权限收敛:Web 目录不给 777,配置文件不含明文密码
网络层
- ✅ 防火墙默认拒绝入站,仅放行 22(或自定义端口)/80/443
- ✅ 数据库、Redis、对象存储等内部服务只监听 127.0.0.1 或内网
- ✅ Redis 设置
requirepass并禁用危险命令(CONFIG/FLUSHALL) - ✅ 不必要的出站同样审计:失陷主机常外联异常端口
# UFW 基线示例
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp
ufw allow 80,443/tcp
ufw enable
应用层
- ✅ Web 应用与插件保持更新(WordPress 见《部署指南》的备份策略)
- ✅ 全站 HTTPS + HSTS(见《HTTPS 配置》)
- ✅ 管理后台加访问限制(IP 白名单或 VPN)
- ✅ 错误信息不泄露路径与版本:关闭详细报错输出
入侵检测与审计
# 安装 fail2ban 自动封禁爆破 IP
apt install fail2ban -y
systemctl enable --now fail2ban
# 查看当前封禁
fail2ban-client status sshd
# 巡检命令
last -20 # 最近登录
sudo lastb | head # 失败登录
ss -tunlp # 监听端口核对
journalctl -u ssh --since "24 hours ago" | grep -c Failed
备份与恢复演练
- ✅ 3-2-1 备份策略落地(见《监控与备份》)
- ✅ 每季度做一次恢复演练——没验证过的备份等于没有备份
- ✅ 备份保留离线副本,防勒索加密连备份一起拿走
快速自查脚本
把下面的命令存成 security-check.sh,每周跑一次并人工复核输出:
#!/bin/bash
echo "== 待重启的更新 =="; ls /var/run/reboot-required 2>/dev/null && cat /var/run/reboot-required.pkgs
echo "== root 等价账户 =="; awk -F: '$3==0{print $1}' /etc/passwd
echo "== 异常监听 =="; ss -tunlp | grep -v 127.0.0.1
echo "== 近期失败登录 =="; sudo lastb | head -5
echo "== fail2ban 状态 =="; sudo fail2ban-client status sshd 2>/dev/null | grep "Banned"
相关文章
本文核对日期:2026-08-18。具体配置以发行版官方文档为准。