在开始前,请确认:已注册AWS账号并具有足够权限(建议使用具有IAM管理和EC2操作权限的管理员账号或角色);选择区域为香港(ap-east-1);已有或将创建VPC与子网。建议在操作前打开CloudTrail与CloudWatch以便后续审计和日志收集。
登录AWS控制台,切换到“香港(ap-east-1)”区域 -> 服务 -> EC2 -> 左侧导航“Security Groups” -> 点击“Create security group”。填写Name(如 hk-web-sg)、Description、选择对应VPC。创建后会自动生成安全组ID(如 sg-xxxx)。
在刚创建的安全组中选择“Inbound rules” -> “Edit inbound rules” -> 添加规则:SSH(22)建议Source填写你的公网IP/32(例如 203.0.113.5/32);HTTP(80)与HTTPS(443)如为公网站点可设为0.0.0.0/0(但尽量仅对必要端口开放);RDP(3389)仅对Windows管理IP开放。在描述中写明用途,便于后续审计。
默认出站通常为全部允许(0.0.0.0/0)。如需更严格控制,可按需限制目的端口/目的IP,例如只允许访问特定S3 VPC端点或NAT网关。记住安全组是有状态(stateful),返回流量自动允许,无需创建对应的出站规则来允许响应包。
尽可能使用具体CIDR或Security Group作为来源:当多台实例互通时,使用Security Group引用(选择“Custom” -> Security group ID)比使用公网CIDR更安全;对管理员访问限制到公司固定公网IP或使用VPN/Direct Connect。
控制台:EC2 -> Instances -> 选中实例 -> Actions -> Networking -> Change security groups -> 勾选目标安全组并保存。CLI示例:创建安全组:aws ec2 create-security-group --group-name hk-web-sg --description "HK web SG" --vpc-id vpc-xxxxxxxx --region ap-east-1。添加入站:aws ec2 authorize-security-group-ingress --group-id sg-xxxxxxxx --protocol tcp --port 22 --cidr 203.0.113.5/32 --region ap-east-1。将安全组关联到实例:aws ec2 modify-instance-attribute --instance-id i-xxxxxxxx --groups sg-xxxxxxxx sg-yyyyyyyy --region ap-east-1。

安全组仅在实例级控制,子网级可以用Network ACL(无状态)做额外防护。配置NACL时必须为入站与出站都添加相应允许/拒绝规则,优先级按规则编号。推荐做法:在公共子网允许HTTP/HTTPS,阻止所有非必要入站;在私有子网完全禁止公网入站,只通过NAT或ELB访问。
传统方式:控制台 EC2 -> Key Pairs -> Create key pair,下载.pem并本地chmod 400。使用该key通过ssh连接:ssh -i /path/key.pem ec2-user@公网IP。更安全方式:使用AWS Systems Manager Session Manager(无需开22端口)。步骤:1) 为EC2实例附加IAM角色(AmazonSSMManagedInstanceCore);2) 确认SSM Agent已安装并能访问互联网或VPC端点;3) 控制台 Systems Manager -> Session Manager -> Start session。
原则:最小权限(Least Privilege)。创建IAM组(如 EC2-Admins),将用户加入组并附加策略(如自定义策略只允许启动/停止/修改安全组的权限)。示例自定义策略(JSON)可以限定操作与资源ARN。若EC2需要访问S3、DynamoDB等,创建角色并在实例启动时挂载(Instance Profile),避免使用长期凭证。
为所有控制台用户开启MFA;设置账户级密码策略(最低长度、复杂度、密码过期等)。推荐使用AWS STS临时凭证与AWS CLI的角色切换(AssumeRole),避免长期静态凭证出现在代码或配置中。
开启CloudTrail记录API调用并交付到S3;启用CloudWatch Logs与VPC Flow Logs以监控流量和异常;开启GuardDuty与Security Hub做威胁检测与合规检查。定期审查安全组规则变更(CloudTrail可记录Authorize/Revoke操作)。
无法SSH常见原因:安全组未放行22/来源IP错误;实例无公网IP或NAT配置错误;本地防火墙(iptables)阻止;密钥权限不正确(chmod 400)。排查顺序:检查实例网络(ENI、子网、路由表)、安全组与NACL规则、实例系统日志与sshd状态。使用Session Manager可以在无需公网的情况下进入实例排查。
答:是。为保证数据在香港区域存储与加密,KMS key、S3 Bucket(若需区域隔离)、CloudWatch Log组等资源应在ap-east-1创建。创建KMS主密钥并在EC2/EBS加密时指定该key,避免跨区数据泄露和合规问题。
答:最佳做法包括:1)尽量不直接向公网开放管理端口,改用VPN或Session Manager;2)若必须开放,限定来源IP至固定办公公网或使用动态DNS+IP白名单自动同步;3)对公网服务放在负载均衡器后端并结合WAF;4)启用速率限制与入侵检测(GuardDuty)。
答:常用CLI命令示例已在文中:create-security-group、authorize-security-group-ingress、modify-instance-attribute等。IAM角色自动化可用aws iam create-role、aws iam put-role-policy。策略示例:为EC2修改安全组的最小权限JSON只允许ec2:ModifyInstanceAttribute与ec2:AuthorizeSecurityGroupIngress并限定资源ARN。配合CloudTrail和Config可以实现变更审计与合规报警。