1. 初始化与访问安全(SSH 密钥与限制登录)
- 步骤一:在本地生成密钥对:运行 ssh-keygen -t ed25519 -C "you@example.com",按提示保存(默认 ~/.ssh/id_ed25519)。
- 步骤二:将公钥复制到服务器:ssh-copy-id -i ~/.ssh/id_ed25519.pub user@your-hk-server 或手动将文件内容追加到服务器 ~/.ssh/authorized_keys。
- 步骤三:编辑 /etc/ssh/sshd_config,做三项修改:PermitRootLogin no、PasswordAuthentication no、Port 2202(或其他自定义端口),保存并 sudo systemctl restart sshd。
- 步骤四:测试新端口与密钥登录,确认成功后再关闭原始端口(避免被锁)。
2. 防火墙基础(UFW/iptables)
- Debian/Ubuntu 推荐用 UFW:sudo apt install ufw,允许所需端口:sudo ufw allow 2202/tcp、sudo ufw allow 80/tcp、sudo ufw allow 443/tcp,启用 sudo ufw enable。
- CentOS 可用 firewalld:sudo firewall-cmd --permanent --add-port=2202/tcp,reload 后验证。
- 细化规则:只允许管理 IP(如家里或公司固定 IP)访问 SSH:sudo ufw allow from 1.2.3.4 to any port 2202。
- 验证生效:sudo ufw status verbose 或 sudo iptables -L -n。
3. 防爆破工具(安装并配置 Fail2ban)
- 安装:sudo apt install fail2ban 或 yum install fail2ban。
- 基本配置:复制 /etc/fail2ban/jail.conf 为 /etc/fail2ban/jail.local,修改 [sshd] 段:enabled = true、port = 2202、maxretry = 5、bantime = 3600。
- 增加自定义动作:可设置 banaction = ufw 或 iptables-multiport,重启服务 sudo systemctl restart fail2ban。
- 查看被封记录:sudo fail2ban-client status sshd;解封某 IP:sudo fail2ban-client set sshd unbanip 1.2.3.4。
4. 定期更新与自动补丁
- 手动更新命令:Debian/Ubuntu sudo apt update && sudo apt upgrade -y;CentOS sudo yum update -y。
- 自动安全更新(Ubuntu):sudo apt install unattended-upgrades,编辑 /etc/apt/apt.conf.d/50unattended-upgrades,启用安全更新并设置邮件通知。
- 更新策略:对非关键时段自动更新,生产环境先在测试机验证。记录更新时间与变更日志到 /var/log/ops-updates.log。
5. 日志管理与轮转(logrotate)
- 确认日志目录:/var/log/,常用服务日志如 auth.log、syslog、nginx/access.log。
- 配置 logrotate:在 /etc/logrotate.d/ 下为自定义日志写文件,例如 nginx:/var/log/nginx/*.log { daily rotate 14 compress missingok notifempty create 0640 www-data adm sharedscripts postrotate systemctl reload nginx }
- 监控日志异常:结合 logwatch 或简单的 grep 脚本定期检查关键关键字并通过邮件或 Telegram 发送告警。
6. 备份方案(文件与数据库)
- 文件备份(rsync + SSH):在备份机执行 rsync -avz --delete -e "ssh -p2202" user@hk-server:/var/www/ /backup/hk-server/www/;将此命令写入 /etc/cron.daily/ 或 crontab。
- 数据库备份(MySQL):mysqldump -u root -p'密码' --single-transaction --databases dbname | gzip > /backup/dbname_$(date +%F).sql.gz,写入每天凌晨 cron。
- 加密备份与远程存储:使用 gpg 对备份文件加密:gpg --encrypt --recipient you@example.com file.gz,然后上传到第三方对象存储(例如 S3 兼容或备份 VPS)。
- 恢复演练:每月做一次恢复测试,确保备份可用并记录步骤。
7. 基本监控与可视化(快速上手 Netdata)
- 安装 Netdata(快速):bash <(curl -Ss https://my-netdata.io/kickstart.sh);默认在 19999 端口访问。
- 功能:实时 CPU、内存、磁盘、网络、web 应用性能,界面直观,无需复杂配置。
- 异常监控:在 Netdata 中启用告警(Health),配置你的邮件或 Slack/Telegram webhook 接收重要告警。
- 注意:Netdata 更适合单机实时监控,若要多机集中监控请继续看下一段 Prometheus/Grafana。
8. 集中式监控(Prometheus + Node Exporter + Grafana)
- 安装 Node Exporter(被监控端):下载并运行 node_exporter 二进制或系统服务,默认端口 9100。
- 安装 Prometheus(监控端):在 Prometheus 的 prometheus.yml 中加入 job:- job_name: 'hk-servers' static_configs: - targets: ['hk-server-ip:9100']。启动并访问 9090。
- 安装 Grafana:添加 Prometheus 数据源,导入现成 Node Exporter 仪表板(dashboard),或自定义。
- 报警:使用 Alertmanager 配合 Prometheus rules,示例 rule:- alert: InstanceDown expr: up == 0 for: 5m labels: severity: critical 。Alertmanager 可发送邮件、Slack、Telegram。
9. 自动化运维脚本与定期检查(Cron & 简易脚本)
- 常用脚本示例:健康检查脚本 check_health.sh 检查 nginx、mysql 是否运行并重启异常服务,脚本放 /usr/local/bin 并设可执行权限。
- 定时任务:在 root crontab 中增加定时:0 * * * * /usr/local/bin/check_health.sh >> /var/log/ops-check.log 2>&1。
- 报表与审计:每周生成运行状况报表并通过邮件发送给自己,包含 CPU/内存平均、磁盘占用、最近 30 天登录记录(/var/log/auth.log)。
10. 安全加固与合规建议
- 最小化安装:只安装必要软件与服务,关闭不使用的端口与服务(systemctl disable --now 服务名)。
- 用户管理:建立单独管理用户并使用 sudo,避免 root 直接登录。定期审查 /etc/sudoers 与 /etc/passwd。
- 漏洞扫描:使用 Lynis、OpenVAS 或在线扫描工具定期扫描并修补高危漏洞。记录修复流程与时间。
11. 建立运维 SOP(上线/回滚/应急)
- 上线流程:先在测试机跑完整脚本,备份现网,再在维护窗口执行,上线后 30 分钟内密切监控指标。
- 回滚策略:每次改动必须预先准备回滚命令(如恢复备份 rsync 或 mysql 恢复命令),并在变更单中列明。
- 应急联络:准备应急联系方式(云商技术支持、域名 DNS 账号、备份机账号),并在 README 中记录恢复步骤。
12. 性能与费用优化小技巧
- 针对个人用户:监控峰值并按需调整实例规格,避免长期超配产生高额费用。
- CDN 与缓存:对静态站点使用 CDN(Cloudflare 等)减轻服务器带宽与请求压力。
- 自动扩缩容:对于流量突发场景,若托管商支持可考虑自动快照或以镜像快速扩容。
13. 常见问题一:个人使用香港服务器最需要优先做的安全措施是什么?
- 回答要点:优先做三件事:启用 SSH 密钥并禁用密码登录、部署防火墙限制访问(只开放必要端口)以及安装 Fail2ban 防止暴力破解。完成这三步后再做自动更新与备份。
14. 常见问题二:我如何快速实现可视化监控并收到告警?
- 回答要点:最快捷的方法是安装 Netdata(分钟级上线)并配置 Health 告警到邮件或 Telegram。若需要长期多机数据和历史趋势,用 Prometheus 收集 Node Exporter 指标,Grafana 做仪表盘,Prometheus+Alertmanager 负责告警。
15. 常见问题三:备份与恢复有哪些容易忽略但关键的环节?
- 回答要点:关键点包括定期做恢复演练以验证备份有效性、对备份进行加密并离站保存、保留足够的历史版本(比如 7-30 天),以及在备份脚本中记录成功/失败日志并告警异常。
来源:香港服务器个人推荐使用简单安全的运维与监控方法