首先采用“默认拒绝、按需放行”的原则,使用iptables或nftables(或更易用的ufw)将入站默认策略设为DROP,只开放必须端口(如SSH、HTTP/HTTPS)。结合IP白名单、接口绑定与端口速率限制,避免暴力扫描和DDoS放大。将管理口(如SSH)限制为可信网段或跳板机,并配置紧急后门IP或控制台访问。定期把防火墙规则写入启动脚本并纳入配置管理。
保持规则最小化、使用状态跟踪(stateful)、对远程管理限速并记录所有被拒绝连接,便于后续分析。
可用示例:ufw default deny incoming; ufw allow proto tcp from 1.2.3.0/24 to any port 22; ufw limit 22/tcp。
检查默认策略、开放端口列表、规则持久化、远程管理来源是否受限。
采用3-2-1备份原则:至少保留3份数据、使用2种不同媒介、1份异地备份。结合快照(LVM或云快照)与文件级增量(rsync/borg/restic)实现高效备份。对数据库用逻辑备份或冷备份,注意事务一致性。所有备份应加密并保存在独立账户或对象存储(如S3兼容)中,定期做完整性校验与恢复演练。
增量备份节省空间,快照便于快速恢复系统状态。异地备份可选香港以外的数据中心以防区域故障。
使用基于密钥的加密(GPG/age)并把密钥存放在KMS或硬件安全模块,禁止将备份和密钥放在同一位置。
制定恢复流程并每季度演练,记录恢复时间(RTO)与可接受数据丢失量(RPO)。
坚持最小权限与角色分离(RBAC),把管理操作限定在具备对应权限的账号。SSH禁止密码登录,仅允许SSH密钥并配合密钥口令,优先启用多重认证(MFA)或基于证书的登录。对超权操作使用sudo审计,并将审计日志送到集中日志系统。
把管理入口放在跳板机或堡垒机上,跳板机开启更严格的访问控制和多因素认证,敏感服务放在私有网络中并通过安全组控制访问。
隐藏管理端口(非安全措施但可降低被扫描概率)、实施端口敲门或基于TLS的代理来减少直接暴露。
定期审查账户与SSH公钥,撤销离职人员权限并启用登录失败告警。

部署fail2ban或类似工具自动封锁暴力登录源,结合IDS/IPS(如Snort、Suricata)检测异常流量并触发响应。设置速率限制、连接追踪与流量阈值告警,配合WAF或CDN缓解应用层攻击。把规则、脚本与策略纳入基础设施即代码(IaC),实现版本化与可回滚。
集中收集系统与防火墙日志(ELK/Prometheus),制定告警策略并确保告警不会被忽略。自动化响应结合人工审批,以避免误封造成服务中断。
把常见封锁策略写成可复用模块,测试后推到生产并限制变更窗口与回滚机制。
保留关键日志至少90天或根据合规要求,定期导出并加密存档。
制定详细的灾难恢复(DR)演练计划与故障切换流程,备份不仅包括数据也要包含配置(防火墙规则、iptables-save、服务配置)。实现冗余:多可用区或多节点集群,并把关键服务(数据库、认证)做主从或多活部署。保持恢复脚本可执行并自动化,恢复时按依赖顺序(网络->存储->数据库->应用)逐步上线。
定期导出并版本化网络与防火墙配置(git+私有仓库),恢复时能快速复位规则集并核对差异。
每半年或每次重大变更后进行一次完整恢复演练,记录耗时与问题并持续改进流程。
在不可抗力下,启用最低可用模式以保持关键业务,随后逐步恢复非关键功能并同步数据。