AxionserveSign in / RegisterEnglish/中文/cn繁体/tw

第 6 课 · 安全基线:拿到新服务器的第一小时

互联网从零 · L1 · 第 6 / 6 节 · 约 3 分钟

新服务器上线第一小时做完这份清单,能挡掉绝大多数自动化攻击——互联网上无差别的扫描与爆破每分钟都在发生,安全不是买来的产品,而是一组默认动作。本课的清单可直接照抄执行。

纵深防御示意图:防火墙、SSH 加固、最小权限与备份由外向内三层

第一小时清单(照抄执行)

# 1) 创建普通用户并给 sudo,日常不用 root
adduser deploy && usermod -aG sudo deploy
# 2) 生成密钥并用密钥登录(本机执行,然后推送公钥)
ssh-keygen -t ed25519 -C "deploy@$(hostname)"
ssh-copy-id deploy@服务器IP
# 3) SSH 加固:禁密码、禁 root 直登(确认密钥登录成功后再改!)
sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
systemctl restart sshd
# 4) 防火墙:默认拒绝入站,只放行必需端口
ufw default deny incoming && ufw allow 22/tcp && ufw allow 80/tcp && ufw allow 443/tcp && ufw enable
# 5) 防爆破 + 自动安全更新
apt install -y fail2ban unattended-upgrades && systemctl enable --now fail2ban
# 6) 自查对外暴露面:除 22/80/443 外不应有公网监听
ss -tlnp

服务与面板的收敛

每多跑一个服务,就多一分暴露面。数据库绑定本地地址(bind 127.0.0.1)或内网地址,绝不对公网监听;不用的服务一律停用。使用宝塔、1Panel 这类面板时:改掉默认端口、开启面板 SSL、绑定访问白名单或二次验证——面板本身权限极高,它被打穿等于整台机器易主。

备份 3-2-1

3 份数据、2 种介质、1 份异地。实操底线:数据库每日 dump + 站点目录快照,加密后同步到对象存储或另一台服务器;每季度做一次恢复演练——没验证过恢复的备份等于没有备份。只放在同一台服务器上的「备份」,在勒索场景下会和原数据一起被加密。

# 最小备份示例:数据库 dump + 目录打包 + 同步异地(rsync 到备份机)
mysqldump --all-databases | gzip > /backup/db-$(date +%F).sql.gz
tar czf /backup/site-$(date +%F).tar.gz /var/www
rsync -az /backup/ backupuser@备份机:/data/backup/

日志与时间

保留登录与提权日志(auth.log / secure)、Web 访问日志、数据库慢查询日志,并集中收集(哪怕只是每日打包传异地)。日志时间必须准,否则排障与取证时对不上时间线:

timedatectl set-timezone Asia/Shanghai
timedatectl status | grep -E 'synchronized|Time zone'

怎么判断被入侵了

  • CPU 长期满载而业务量没涨,top 里有陌生进程——大概率被挖矿;
  • ss -antp 出现到陌生 IP 的持续外连(矿池常用 3333/5555/14444 等端口);
  • crontab、启动项里出现不认识的条目;last/lastb 里有成功的陌生登录。

应急响应四步

  • 隔离:防火墙切断除管理口外的流量,阻止横向扩散;先别急着重装(证据会消失);
  • 取证:保存 last/lastb、auth 日志、crontab、ss -antp 异常外连、近 3 天变更文件清单(find / -mtime -3);
  • 清除与加固:更换全部凭据(SSH、面板、数据库、云 API token),清计划任务与启动项,修补入口漏洞;无法确认干净时,迁移数据后重装系统;
  • 复盘:确定入侵路径,把缺口补进你的第一小时清单,必要时向相关方通报。

Web 与数据库层的三条纪律

  • 更新时效:CMS 与插件的漏洞利用通常在全网知晓后数小时内开始,自动安全更新开着,大版本升级排进每周日程;
  • 最小暴露:数据库只监听本地/内网,管理后台加访问白名单或二次验证,上传目录禁用脚本执行;
  • 最小权限:应用连数据库用专属账号,只给需要的库表权限,绝不用 root 账号跑业务。

一次挖矿感染的处置时间线(演练)

假设监控告警 CPU 满载:第 0 分钟,top 确认陌生进程名与路径;第 5 分钟,ss -antp 找到它的外连目标(矿池 IP 与端口),crontab -l 与 /etc/cron.* 里发现持久化条目;第 10 分钟,防火墙切断该进程外连、删除计划任务与二进制文件;第 30 分钟,排查入口——最近的 Web 漏洞、弱口令面板或暴露在公网的管理端口;第 1 小时起,换全部凭据、修补入口,若无法确认干净则备份数据后重装。全程先取证再清除,顺序反了就只能靠重装兜底。

合规 basics

面向中国内地用户的站点完成 ICP 备案;日志留存满足当地监管要求;处理个人数据遵循最小化收集与加密存储。海外机房无备案要求,但内容合规责任始终在运营者——侵权、诈骗与垃圾邮件在任何地区都会导致封机。

最后强调一次优先级:安全动作的价值排序是「备份可恢复 > 暴露面收敛 > 登录加固 > 检测告警」。预算与精力有限时,从前往后做——能被恢复的系统才有资格谈其他一切。

本节小结

  1. 第一小时六件事:普通用户+sudo、密钥登录、禁密码禁 root、ufw 默认拒绝、fail2ban+自动更新、ss -tlnp 自查暴露面。
  2. 备份 3-2-1 且每季度演练恢复;异地副本是勒索场景的唯一保险;面板与数据库绝不暴露公网。
  3. 入侵信号看三样:陌生进程、异常外连、计划任务;应急四步隔离→取证→清除加固→复盘,先保证据再恢复。