堡垒机安全架构:从零搭建企业级防护(单节点版)

一、综合架构设计

主机角色 IP地址 操作系统 关键服务/用途 安全备注
堡垒机 (Teleport) 10.0.0.1 Ubuntu 24.04 LTS Teleport Auth + Proxy + Node 唯一SSH入口,禁用root直连
Web服务器 10.0.0.10 Ubuntu 24.04 LTS Nginx, 自签证书 / Let's Encrypt 证书 仅允许堡垒机访问,禁用公网SSH
数据库服务器 10.0.0.20 Ubuntu 24.04 LTS PostgreSQL 仅允许Web服务器访问,禁用SSH
监控服务器 10.0.0.30 Ubuntu 24.04 LTS Prometheus + Grafana 仅允许堡垒机访问

注:所有机器防火墙默认DROP,只开必要端口。SSH端口全改非22(比如2222),且仅允许堡垒机IP访问。

二、SSH加固:禁用密码登录,只用密钥

在每台机器 编辑

复制代码
vim /etc/ssh/ssh_config.d/safe.conf 

PasswordAuthentication no
PermitRootLogin no
Port 2222  # 改个端口,防脚本小子
AllowUsers zz  # 只允许特定用户

改完 systemctl restart ssh

密钥全生命周期管理

  1. 密钥对管理

    本地生成:ssh-keygen -t ed25519 -C "工号-部门"

    公钥(id_ed25519.pub)扔到服务器的 ~/.ssh/authorized_keys
    私钥打死别给别人,也别传到服务器上!

|-----------------------------------------------------|------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------|
| ssh-keygen -t ed25519 -C "your_email@example.com" | 生成密钥对-t ed25519:选现代加密算法(非老旧RSA) •-C:加注释(如邮箱/工号) | 为啥不用RSA? - Ed25519密钥更短(256位=RSA 3072位安全强度),登录更快,抗量子计算(虽当前不急,但金融客户硬性要求) --C注释是审计命脉 !线上事故复盘:某次误删数据,靠authorized_keys里的dev-ops@company.com秒定位到责任人(等保审计时,安全团队必查密钥归属) •血泪教训 :曾见运维用默认RSA 2048,被渗透测试扫出漏洞...现在我们强制Ed25519,新项目上线直接卡死 | 等保2.0 8.1.4:要求"采用密码技术保证通信安全",Ed25519符合GM/T 0009-2012标准(金融行业硬指标) |
| 公钥扔进~/.ssh/authorized_keys | 服务器端授权 • 仅公钥生效,私钥永不出本地 • 文件权限必须:~/.ssh 700+authorized_keys 600 | 生产雷区预警 : - 权限错=登录失败!90%新手栽在这(SSH服务会默默拒绝,不报错)。我们运维手册第一条: "chmod 700 ~/.ssh && chmod 600~/.ssh/authorized_keys,刻进DNA" -绝不手动复制 !用Ansible批量推公钥(示例playbook:authorized_key: user=deploy key="{``{ lookup('file', 'id_ed25519.pub') }}"),避免手抖粘错 -进阶操作 :在authorized_keys里加command="docker ps",no-agent-forwarding限制权限(某次事故:开发用密钥提权删库,加了限制后损失砍90%) | 等保2.0 8.1.2:要求"访问控制策略",密钥归属+权限限制=满足"最小授权"条款 |

  1. 生成端 :强制Ed25519算法 + 工号注释(-C "ops-1024"),满足等保身份可追溯
  2. 分发端 :Ansible加密推送公钥,authorized_keys自动加no-port-forwarding防隧道攻击
  3. 审计端 :ELK收集SSH登录日志,关联密钥注释→实时告警异常登录(如非工作时间)
    结果:密钥登录率100%,暴力破解归零,等保三级一次过。"

堡垒机思维:

你本地 → 只能连堡垒机 (10.0.0.1) → 从堡垒机跳转到内网机器 (10.0.0.10, 20, 30)

这样,攻击者就算拿到你本地私钥,也只能进堡垒机,进不了核心业务。

三、HTTPS证书:不是"有绿锁就行",是"怎么管好锁"

自签证书(开发/测试环境用):

复制代码
# 1. 生成私钥
openssl genrsa -out server.key 2048

# 2. 生成CSR(证书签名请求)
openssl req -new -key server.key -out server.csr

# 3. 自己给自己签名(有效期365天)
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

# 4. Nginx配置里指向这两个文件
ssl_certificate /path/to/server.crt;
ssl_certificate_key /path/to/server.key;

问题:浏览器会报警告"不安全",因为没人信任你这个"自封的CA"。


Let's Encrypt(生产环境必须用):

certbot 工具,免费、自动、受信任。

复制代码
# 1. 安装 certbot (Ubuntu)
sudo apt update && sudo apt install certbot python3-certbot-nginx

# 2. 申请证书(自动帮你配Nginx)
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

# 3. 自动续期(Let's Encrypt证书90天过期)
sudo certbot renew --dry-run  # 先测试
# 系统已自动加了cron,不用你管

重点 :监控证书到期!用 certbot certificates 查看,或接入Prometheus监控。

四、堡垒机实战:用 Teleport 替代传统跳板机

为啥用Teleport?因为传统SSH跳板机审计弱、权限乱、扩展差。Teleport自带审计录像、RBAC、多云支持,等保三级都够用。

在 10.0.0.1 上安装Teleport

复制代码
# 1. 加官方源
sudo apt-get update && sudo apt-get install apt-transport-https gnupg
curl https://deb.releases.teleport.dev/gpg | sudo gpg --dearmor -o /usr/share/keyrings/teleport-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/teleport-archive-keyring.gpg] https://deb.releases.teleport.dev stable main" | sudo tee /etc/apt/sources.list.d/teleport.list

# 2. 安装
sudo apt-get update
sudo apt-get install teleport

# 3. 初始化(作为Auth Server + Proxy)
sudo teleport configure --cluster-name=prod-cluster --acme --acme-email=admin@example.com --public-addr=teleport.yourdomain.com --token=secure-token-here > /etc/teleport.yaml

# 4. 启动
sudo systemctl start teleport
sudo systemctl enable teleport

把其他机器(10.0.0.10, 20, 30)加入Teleport集群

在每台机器上装Teleport,然后:

复制代码
# 以Node身份加入
sudo teleport start --roles=node --token=secure-token-here --ca-pin=sha256:xxx --auth-server=10.0.0.1:3025

你本地怎么连?

  1. 安装 tsh (Teleport Client)
  2. tsh login --proxy=teleport.yourdomain.com --user=yourname
  3. tsh ssh root@web-server # 直接连逻辑主机名,不用记IP
相关推荐
devmoon3 小时前
Chopsticks 本地分叉平行链实战指南
安全·智能合约·polkadot·erc-20·独立链
JMchen1233 小时前
Android网络安全实战:从HTTPS到双向认证
android·经验分享·网络协议·安全·web安全·https·kotlin
科技块儿3 小时前
如何选择合适的IP查询工具?精准度与更新频率全面分析
网络·tcp/ip·安全
Hi202402173 小时前
在Docker容器中安全运行OpenClaw:无需虚拟机,体验AI助手
人工智能·安全·docker·openclaw
种时光的人3 小时前
CANN 生态 ×AIGC 合规:cann-compliance 让大模型落地既安全又合规
安全·aigc
hzb666663 小时前
unictf2026
开发语言·javascript·安全·web安全·php
大模型玩家七七4 小时前
基于语义切分 vs 基于结构切分的实际差异
java·开发语言·数据库·安全·batch
Hello.Reader12 小时前
Flink ZooKeeper HA 实战原理、必配项、Kerberos、安全与稳定性调优
安全·zookeeper·flink
智驱力人工智能13 小时前
小区高空抛物AI实时预警方案 筑牢社区头顶安全的实践 高空抛物检测 高空抛物监控安装教程 高空抛物误报率优化方案 高空抛物监控案例分享
人工智能·深度学习·opencv·算法·安全·yolo·边缘计算
数据与后端架构提升之路13 小时前
论系统安全架构设计及其应用(基于AI大模型项目)
人工智能·安全·系统安全