💡 一站式指南:从零开始搭建并优化 Google Cloud Platform 免费实例

前言

本文详细记录了如何搭建和配置 GCP 永久免费实例,包含避免超出免费额度、SSH 安全配置、防暴力破解和日志管理等最佳实践。

一、基础搭建

1.1 搭建步骤

参考视频教程:GCP 节点搭建指南

二、优化配置避免超额

2.1 实例规格确认

确保使用免费额度范围内的配置:

实例规格配置

2.2 API 服务检查

注意事项:

  • GCP 每月提供前 50GB 免费日志存储
  • 及时关闭不必要的 API 服务,避免产生额外费用

启用的 API 列表

2.3 关闭 rsyslog 服务

为减少日志存储占用,可关闭系统日志服务:

sudo systemctl stop rsyslog
sudo systemctl disable rsyslog
sudo systemctl stop rsyslog.service
sudo systemctl disable rsyslog.service
sudo systemctl stop syslog.socket
sudo systemctl disable syslog.socket

2.4 删除osconfig 和 ops-agent

sudo systemctl stop google-osconfig-agent
sudo systemctl disable google-osconfig-agent
curl -sSO https://dl.google.com/cloudagents/add-google-cloud-ops-agent-repo.sh
sudo bash add-google-cloud-ops-agent-repo.sh --uninstall --remove-repo

三、SSH 安全配置

3.1 配置 SSH 密钥登录

生成密钥对:

ssh-keygen -t rsa -f ~/.ssh/gcp -C username

查看公钥内容:

cat ~/.ssh/gcp.pub

添加公钥到 GCP:

  1. 复制公钥内容
  2. 访问 GCP SSH 密钥管理页面
  3. 选择对应的项目并添加密钥

使用密钥登录:

ssh -i ~/.ssh/gcp username@hostname

3.2 禁用密码登录

修改 SSH 配置:

sudo vi /etc/ssh/sshd_config

找到并修改以下配置项:

PasswordAuthentication no

重启 SSH 服务:

sudo systemctl restart sshd

四、安全加固

4.1 安装 Fail2ban 和 IPset

安装软件包:

sudo apt update
sudo apt install fail2ban ipset -y

创建配置文件:

sudo cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

编辑配置:

sudo vi /etc/fail2ban/jail.local

4.2 配置 SSH 防护规则

在 jail.local 中添加或修改以下配置:

[sshd]
# mode   = normal
port     = ssh
logpath  = %(sshd_log)s
backend  = systemd
filter   = sshd
banaction = iptables-ipset-proto6
maxretry = 1
findtime = 1d
bantime  = 2w
ignoreip = 127.0.0.1/8

配置说明:

  • maxretry = 1:失败 1 次即封禁
  • findtime = 1d:检测时间窗口为 1 天
  • bantime = 2w:封禁时长为 2 周
  • ignoreip:白名单 IP 地址

启动服务:

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

4.3 查看封禁状态

查看所有封禁 IP:

sudo ipset list
sudo fail2ban-client banned

查看 SSH 服务状态:

sudo fail2ban-client status sshd

五、日志管理

5.1 查看系统日志

实时查看日志:

# 查看最新 100 条日志并持续跟踪
journalctl -o cat -f -n 100

# 查看指定服务日志(如 sing-box)
journalctl -u sing-box.service -o cat -f -n 100

检查日志占用空间:

sudo journalctl --disk-usage

5.2 日志文件位置

  • 配置文件:/etc/systemd/journald.conf
  • 存储位置:/var/log/journal/

5.3 日志优化建议

⚠️ 注意:定期观察日志占用情况,避免超出免费存储额度。如有必要,可在 journald.conf 中限制日志大小:

SystemMaxUse=500M
SystemKeepFree=1G

总结

通过以上配置,你的 GCP 实例已经具备:

✅ 基于 SSH 密钥的安全登录 ✅ 自动防暴力破解保护 ✅ 优化的日志管理 ✅ 控制在免费额度范围内的资源使用

定期检查实例状态和账单,确保不会产生意外费用。