1.
步骤一:创建非root管理员账号并禁用root登录。命令示例:adduser deploy && usermod -aG sudo deploy;编辑 /etc/ssh/sshd_config,设置 PermitRootLogin no,保存后 systemctl restart sshd。
步骤二:使用 SSH 密钥并禁用密码认证。生成密钥:ssh-keygen -t ed25519 -C "ops@yourdomain";将公钥放到 /home/deploy/.ssh/authorized_keys,chown -R deploy:deploy /home/deploy/.ssh;然后在 sshd_config 中设置 PasswordAuthentication no,PubkeyAuthentication yes,Restart sshd。
步骤三:更换默认端口与限制登录来源(可选但推荐)。在 sshd_config 改 Port 2222;使用 UFW/iptables 只允许管理 IP 白名单,如 ufw allow from 1.2.3.4 to any port 2222 proto tcp。
2.
步骤一:开启自动安全更新(Debian/Ubuntu)。apt install unattended-upgrades apt-listchanges;编辑 /etc/apt/apt.conf.d/50unattended-upgrades 启用安全更新并设置邮件通知。
步骤二:对重要服务设置自动重启策略。对 systemd 服务,编辑 /etc/systemd/system/
步骤三:定期人工核查更新日志。建立每周更新核对的 cron 任务,输出到 /var/log/pkg-updates.log,运维人员确认大型升级时机。
3.
步骤一:使用 UFW(易用)或 nftables/iptables(高级)。基本规则示例(UFW):ufw default deny incoming; ufw default allow outgoing; ufw allow 80/tcp; ufw allow 443/tcp; ufw allow 2222/tcp from 1.2.3.4; ufw enable。
步骤二:限速与连接追踪。iptables 可以加上 connlimit 模块限制单IP连接数:iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 20 -j DROP。
步骤三:启用 SYN cookies 防御SYN洪泛:sysctl -w net.ipv4.tcp_syncookies=1,并写入 /etc/sysctl.conf 持久化。
4.
步骤一:安装 fail2ban 并启用 SSH、nginx 等 jail。apt install fail2ban;编辑 /etc/fail2ban/jail.local,配置 bantime、maxretry、findtime;restart fail2ban。
步骤二:结合 UFW 与 fail2ban 自动封禁。确保 fail2ban 的 action 使用 ufw 封禁而非 iptables(视系统而定)。
步骤三:监控被封禁IP列表并定期白名单可信IP。
5.
步骤一:在 Nginx/Apache 上启用 TLS(Let's Encrypt)。安装 certbot:apt install certbot python3-certbot-nginx;certbot --nginx -d example.com,配置自动续签 cron:certbot renew --quiet。
步骤二:关闭不必要模块与目录浏览,限制上传文件类型与大小,使用服务端输入过滤与 WAF(如 ModSecurity 或 Cloud WAF)。
步骤三:为 PHP/应用设置低权限用户、禁用危险函数(php.ini disable_functions),并使用 chroot/container 化隔离。
6.
步骤一:检查并修正文件权限。常见:/var/www 所有者设为 www-data:www-data,站点目录权限 750,配置文件如 .env 设为 600。
步骤二:对关键文件设置不可变位(慎用)。示例:chattr +i /etc/ssh/sshd_config(修改前须先 chattr -i)。
步骤三:启用磁盘加密(若含敏感数据),例如使用 LUKS 为数据盘加密并配置开机自动解密或手动解密策略。
7.
步骤一:安装 AIDE 或 Samhain 做文件完整性检查。apt install aide;初始化 aide --init;之后定期运行 aide --check 并将结果发邮件给运维。
步骤二:安装 rkhunter/lynis 做后门与配置扫描。rkhunter --update && rkhunter --check;lynis audit system 并保存报告。
步骤三:对重要日志做远程备份,将 /var/log 发送到集中日志系统(Graylog/ELK/Cloud logging)以防本机日志被篡改。
8.
步骤一:定义 RPO/RTO,选择全量+增量策略。使用 rsync/duplicity/ BorgBackup 将数据同步到异地(可选新加坡以外的区域以防区域性故障)。
步骤二:对数据库做逻辑或物理备份(mysqldump 或 xtrabackup),并测试恢复:在临时实例上还原并验证应用可用性。
步骤三:配置快照策略(VPS 提供商快照)并记录快照保留周期,定期清理过期快照以节省成本。
9.
步骤一:部署监控(Prometheus + node_exporter / Zabbix / Datadog),监控 CPU、内存、磁盘 I/O、网络、进程状态与端口可用性。
步骤二:设置阈值告警(如磁盘使用 > 80% / CPU 5 分钟 Avg > 85% / 关键服务 Down),并配置短信/邮件/钉钉告警。
步骤三:定期审查监控历史,识别趋势并调整容量或优化配置。
10.
步骤一:建立运维变更记录(GitOps / CMDB),所有配置变更通过代码/PR 流程管理并有审计记录。
步骤二:定期执行漏洞扫描(OpenVAS、Nessus、或在线扫描),对高危漏洞尽快修复并记录处理过程。
步骤三:保存合规性检查报告(如 PCI/DNS 要求),并按周期复检。
11.
步骤一:使用 cgroups/systemd 限制单进程资源占用,防止单服务耗尽内存/CPU。
步骤二:为 Web 服务配置连接池、缓存(Redis/Memcached)、CDN 减轻源站压力。
步骤三:建立 DoS/DDoS 缓解流程:启用提供商层面的防护或接入云防护服务,必要时临时更换流量调度策略。
12.
每日(Quick):ssh 登录检查 last, uptime, top/htop, df -h, free -m, systemctl status nginx,mysql;检查 /var/log/auth.log/secure 是否有大量异常登录。
每周(Detailed):apt update && apt upgrade --simulate;aide --check;检查 fail2ban-client status;备份日志与快照是否成功(查看最近备份时间)。
每月(深度):漏洞扫描报告、依赖库扫描(如 composer/npm audit)、恢复演练在备份副本上完成一次完整恢复验证。
13.
答:常见被忽略的有:默认开放的管理端口未更改、未设置管理IP白名单、未启用供应商级别的防护(如流量清洗)、以及没有对控制台/面板访问设置二次校验。建议核查所有对公网开放的端口并启用访问控制与多因素认证。
14.
答:快速判断可参考:1) /var/log/auth.log 出现大量失败或陌生用户;2) top/iotop 显示异常高资源消耗;3) 网络流量异常(iftop 或 vnstat);4) crontab 出现未知任务;5) 可执行文件或配置文件时间被修改(使用 AIDE 检查)。若怀疑入侵,应立即断网隔离并保存内存镜像与日志以便取证。
15.
答:第一:禁用 root 密码登录并使用 SSH 密钥;第二:启用防火墙并仅开放必要端口;第三:配置自动安全更新或建立及时更新流程。完成这三项后,再逐步补充监控、备份与入侵检测。