第一步是做系统和应用的更新与最小化。登录后立即执行系统补丁:在Debian/Ubuntu上运行apt update && apt upgrade -y,在CentOS上运行yum update -y。卸载不必要的软件包,关闭不使用的服务(如FTP、Telnet)。同时启用自动安全更新或定期检查补丁,确保内核与关键组件不过期。对外暴露的服务应放在最小端口集合内,尽量使用最新稳定版本的Web服务器与数据库。
建议禁用密码登录,使用SSH Key并修改默认端口:在服务器上生成密钥对(本地:ssh-keygen -t rsa -b 4096),将公钥追加到~/.ssh/authorized_keys。编辑/etc/ssh/sshd_config,设置 PasswordAuthentication no、PermitRootLogin no、更改Port为非标准端口并重启SSH。结合IP白名单或Jump Server,限制登录来源。必要时启用双因素认证(如Google Authenticator PAM模块)。
推荐使用ufw/nftables/iptables作为防火墙,配合 fail2ban 做暴力破解防护。示例:启用ufw并允许SSH外部端口:ufw allow 22/tcp(替换为你的SSH端口),然后ufw enable。安装fail2ban并配置 jail.local 对 SSH 和 web 入口限速。对于Nginx/Apache,可启用 ModSecurity 或 OWASP CRS,阻断常见Web攻击。定期检查开放端口:ss -tulnp,关闭无用端口并记录日志到集中化系统(如ELK/Graylog)。
文件备份:使用 rsync + cron 做增量备份到本地挂载或远程备份服务器。例如每日增量到远端:rsync -avz --delete /var/www/ user@backup.example:/backups/$(hostname)/,并用crontab定时执行。数据库备份:MySQL执行逻辑备份 mysqldump -u root -p --databases dbname | gzip > /backups/dbname_$(date +\%F).sql.gz,或使用Percona XtraBackup做热备份。为防止单点故障,启用快照(云提供商快照API)与至少一套异地备份(如对象存储:rclone同步到S3/阿里OSS)。备份文件加密(gpg)并保留多版本策略(7天日备、4周周备、12月月备)。
建立异地灾备步骤:1) 配置实时或定期同步(如基于DRBD或主从复制的数据库);2) 将站点静态资源与备份推送到云对象存储或异地VPS;3) 准备自动化恢复脚本(包含环境安装、部署与数据导入)。定期进行恢复演练:在非生产时间在备用实例上还原最近备份,验证网站能否启动、数据库一致性与性能。测试DNS切换流程(TTL设置短以便快速切换),并记录RTO/RPO指标。演练后修正备份策略与文档,确保在实际故障时能按步骤恢复。