1.
选择合适的“永久免费”云供应商与区域
- 建议选择Oracle Cloud(Always Free)并在东京(ap-tokyo-1)或AWS/GCP的免费额度并结合东京区;Oracle明确有永远免费实例,适合长期部署。
- 操作:注册Oracle Cloud账号 → 登录控制台 → 在“Compute”选择“创建实例” → 区域选择 ap-tokyo-1 → 选择Always Free兼容的形态(常为ARM/VM.Standard.A1)
2.
创建实例时的网络与安全组初始设置
- VCN/子网:创建VCN并在公有子网内创建实例;记录公有IP。
- 安全列表/网络安全组:只开放必要端口(22、80、443),针对管理IP限制SSH来源(仅允许你的办公/家用IP)。示例规则:SSH TCP 22 源 1.2.3.4/32;HTTP TCP 80 源 0.0.0.0/0;HTTPS TCP 443 源 0.0.0.0/0。
3.
使用SSH密钥而非密码登录,生成与上传密钥
- 本地生成:ssh-keygen -t ed25519 -C "you@domain" 然后不设置口令或使用强口令并保管私钥。
- 将公钥内容(~/.ssh/id_ed25519.pub)粘贴到创建实例时的SSH公钥字段;进入实例后检查权限:chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys。
4.
创建非root用户并禁用root远程登录
- 添加用户并授权:sudo adduser deployuser; sudo usermod -aG sudo deployuser。
- 编辑 /etc/ssh/sshd_config:PermitRootLogin no、PasswordAuthentication no、ChallengeResponseAuthentication no、UsePAM yes,并重启ssh:sudo systemctl restart sshd。
5.
基本系统加固与最小安装
- 卸载不必要软件:sudo apt purge package-name;列出并移除不常用的服务如ftp、telnet、rpcbind等。
- 配置AppArmor/SELinux(视发行版而定)。Ubuntu:确保AppArmor启用并加载应用策略。
6.
配置防火墙与入侵防护
- 使用ufw示例(Ubuntu):sudo apt update && sudo apt install ufw -y;sudo ufw default deny incoming;sudo ufw default allow outgoing;sudo ufw allow proto tcp from 1.2.3.4 to any port 22;sudo ufw allow 80/tcp;sudo ufw allow 443/tcp;sudo ufw enable。
- 安装fail2ban:sudo apt install fail2ban -y;在 /etc/fail2ban/jail.local 添加ssh配置,设置bantime、maxretry;重载服务:sudo systemctl restart fail2ban。
7.
自动更新与补丁管理
- Ubuntu/Debian:sudo apt install unattended-upgrades -y;编辑 /etc/apt/apt.conf.d/50unattended-upgrades,启用安全更新并配置自动重启核可。
- 为关键服务保留手动检查频率,并将关键内核更新通知到你的邮件或监控系统。
8.
证书与HTTPS(Let's Encrypt)
- 安装certbot并为Nginx/Apache配置证书:sudo apt install certbot python3-certbot-nginx -y;sudo certbot --nginx -d example.com -d www.example.com。
- 设置renew cron:sudo crontab -e 添加:0 3 * * * /usr/bin/certbot renew --quiet && systemctl reload nginx。
9.
备份、快照与灾难恢复策略
- 使用云厂商快照API:在Oracle Console为Block Volume启用定期快照;也可用命令行oci oracli写脚本每天创建并保留7天。
- 导出数据库备份到对象存储(每天全量/每小时增量),并将一份异地复制到另一区域或第三方对象存储。
10.
监控、告警与外部健康检查
- 部署简单的进程/端口监控:使用UptimeRobot或Pingdom监控80/443,设置短信/邮件告警。
- 更完善:安装Prometheus node_exporter + Grafana,或使用Oracle Monitoring服务,将阈值告警(CPU、内存、磁盘、响应时延)与Slack/邮件集成。
11.
提高可用性与降低单点故障
- 使用Cloudflare或其他CDN做前端代理,启用缓存、WAF和DDoS保护,将流量转发到你在日本的实例,遇到实例不可用时可展示自定义静态页面。
- 对于限于免费额度无法使用自带负载均衡的场景,考虑设置健康检查并使用DNS Failover与低TTL切换备用IP。
12.
日志管理、权限与定期审计
- 集中日志:将syslog/nginx日志推送到云对象存储或ELK/Cloud logging,设置保留策略。
- 定期审计:每月检查 /var/log/auth.log、sudoers变更、crontab以及已安装软件;使用diff或审计工具记录关键文件变更。
13.
自动化与基础设施即代码(可选但推荐)
- 使用Terraform管理网络、实例和安全组,便于回滚与复现。示例:用provider oci、定义 compute_instance、vcns、security_lists。
- 将常规初始化脚本放入cloud-init用户数据,确保重建实例时自动完成密钥注入、用户创建与基础配置。
14.
应对常见攻击场景的具体命令示例
- 阻止暴力破解(fail2ban):在 /etc/fail2ban/jail.local 添加 [sshd] enabled=true port=22 filter=sshd logpath=/var/log/auth.log maxretry=5 bantime=3600。
- 限制SSH登录速率(iptables):sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m recent --set;sudo iptables -A INPUT -p tcp --dport 22 -m recent --update --seconds 60 --hitcount 6 -j DROP。
15.
运维 SOP(简短)
- 上线前检查清单:SSH密钥与非root用户、ufw规则、fail2ban、HTTPS证书、快照策略、监控报警已启。
- 故障演练:定期模拟不可用场景(重启实例、网络中断)并验证备份恢复与DNS切换流程。
16.
成本与免费额度注意事项
- 虽说“永久免费”,但备份、外部流量、额外的对象存储/负载均衡可能产生费用。监控账单并设置花费告警。
- 在控制台设置预算上限和通知,避免因额外流量导致意外扣费。
17.
常见错误与防范建议
- 错误:开放SSH到0.0.0.0/0;修复:限定来源IP或使用Jump Box +私网。
- 错误:不启用自动更新;修复:启用unattended-upgrades并配置邮件告警。
18.
问:永久免费云服务器真的安全可靠用于生产吗?
- 答:永久免费并不等于不安全。通过上述加固(限制端口、SSH密钥、自动更新、WAF/CDN、备份与监控)可以将风险降到可接受水平,但对于关键业务建议评估SLA、冗余设计与付费备份/多可用区方案。
19.
问:如何在日本节点减少网络中断影响?
- 答:使用CDN(Cloudflare)将流量分发,启用缓存与Always Online;使用DNS Failover与短TTL准备备用IP;对关键服务使用跨可用区或跨区域备份以实现快速恢复。
20.
问:如果实例被攻破,第一时间应做什么?
- 答:立即隔离(取下实例公有IP或从负载池移除)、保留快照(制作块存储快照备证据)、检查日志定位入侵口、根据备份快速恢复到干净实例并更换密钥/证书,然后逐项修补被利用漏洞并复盘安全措施。
来源:如何配置日本永久免费云服务器以减少安全隐患和服务中断风险