AWS EC2实例安全远程访问最佳实践
EC2 远程连接方案对比
远程访问 Amazon EC2 实例主要有以下四种方式:
- Secure Shell (SSH) 远程访问
- AWS Systems Manager 会话管理器
- 适用于 Linux 实例的 EC2 Serial Console
- Amazon EC2 Instance Connect
SSH 远程访问
SSH(Secure Shell)广泛应用于远程服务器管理和文件传输,作为传统且最常用的连接方式,它通过非对称加密技术确保通信安全,使用密钥对(如 .pem文件)进行身份验证。
SSH的优化实践:
1. 密钥管理:告别id_rsa
的野蛮生长
-
痛点:密钥泄露、多人共用同一密钥。
-
解决方案:
# 生成ED25519密钥(比RSA更安全)
ssh-keygen -t ed25519 -f ~/.ssh/ec2-prod-key -C "admin@2024"# 密钥权限加固
chmod 400 ~/.ssh/ec2-prod-key
-
进阶:使用AWS Secrets Manager自动轮换密钥。
2. 端口安全:隐藏你的“入口”
-
修改默认SSH端口(示例):
# /etc/ssh/sshd_config
Port 59222
-
安全组配置:仅允许企业IP或VPN网段访问(通过CIDR限制)。
3. 堡垒机架构:跳板机的正确姿势
-
拓扑:
公网用户 -> 堡垒机(公有子网) -> 私有EC2实例
-
优势:减少暴露面,集中审计日志。
三、AWS原生方案:向零信任演进
1. Session Manager(系统管理器)
-
原理:无需开放端口,通过SSM Agent建立加密通道。
-
配置步骤:
-
为EC2附加AmazonSSMManagedInstanceCore IAM角色。
-
通过控制台或CLI启动会话:
-
aws ssm start-session --target i-1234567890abcdef0
-
审计:会话日志自动保存至S3/CloudWatch。
2. EC2 Instance Connect
-
场景:临时访问(如紧急故障排查)。
-
优势:临时密钥有效期60秒,通过浏览器直接连接。
-
权限控制:
{
"Effect": "Allow",
"Action": "ec2-instance-connect:SendSSHPublicKey",
"Resource": "arn:aws:ec2:region:account:instance/*",
"Condition": {"StringEquals": {"aws:RequestedRegion": "ap-east-1"}}
}
四、网络层加固:纵深防御
1. 安全组 vs. NACL
-
安全组(推荐):状态化规则,支持精细化实例级控制。
-
NACL:无状态,用于子网级粗粒度过滤。
2. VPN与专线方案
-
Site-to-Site VPN:通过VPC虚拟网关连接企业数据中心。
-
Direct Connect:物理专线保障低延迟与高安全性。
五、监控与应急响应
1. 实时告警配置
-
场景:检测暴力破解攻击。
-
CloudWatch警报规则:
aws cloudwatch put-metric-alarm \
--alarm-name "SSH-Bruteforce-Attempt" \
--metric-name "FailedSSHAttempts" \
--namespace "AWS/EC2" \
--statistic Sum \
--period 300 \
--threshold 10 \
--comparison-operator GreaterThanThreshold
2. 自动化封禁IP
-
结合AWS Lambda + WAF自动屏蔽恶意IP。
六、总结:安全是一种持续实践
-
初级团队:从Session Manager起步,减少人为配置错误。
-
中大型企业:组合使用堡垒机+VPC流量镜像+安全审计。
-
未来趋势:基于AI的异常行为分析(如AWS GuardDuty)。