创建对所有AWS服务有只读权限的IAM User用户

在日常使用IAM User的过程中,要配置对各服务的查询权限,需要逐个添加每个服务对应的IAM Readonly Policy。

当需要配置几十个服务的时候,逐个添加很麻烦。此时可以查找名为“ReadOnlyAccess”的策略挂载到用户,即可为所有服务赋权。

Continue reading “创建对所有AWS服务有只读权限的IAM User用户”

在AWS中国区域启用WAF防护Log4J漏洞

一、背景

2021年12月爆出的高危漏洞 CVE-2021-44228 和CVE-2021-45045漏洞,彻底的防护措施是升级Log4J版本到官方指定版本,临时措施是通过WAF进行一定程度的防护。建议升级到Log4J 2.17版本才可以满足安全要求。

使用WAF防护的前提:

  • 中国区域和海外区域,已经使用EC2、ECS容器服务、EKS容器服务,且使用ALB作为发布点,此场景可使用WAF防护
  • 海外区域,没有使用ALB发布但是使用Cloudfront CDN加速,则可使用基于Cloudfront的WAF防护
  • 中国区域和海外区域的WAF都不支持直接对一个EC2的80、443、8080端口进行防护
  • 不支持NLB网络负载均衡器,NLB后可嵌套接入ALB(此为2021年新发布新特性)

如果您已经配置过WAF并启用了,请参考这里的changelog确认后续更新。如果还没有启用WAF,请参考如下Step-by-step配置说明如下。

Continue reading “在AWS中国区域启用WAF防护Log4J漏洞”

使用EC2 Userdata为丢失密钥的EC2更换密钥

一、背景

AWS云上EC2默认使用比密码认证更安全的密钥登录方式,并且默认不允许SSH密码验证。于此同时,为了提升安全性,密钥一旦创建好只允许下载一次。一旦密钥被下载过,AWS控制台上不再提下载按钮。因此保存密钥就成了一项非常重要的工作。

在一台已经登录上的EC2上,可以访问EC2的元数据来获取当前EC2使用的是哪一个密钥。

curl http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key

如果丢失了密钥,现有EC2将无法登录。

如果希望抢救这台EC2并更换为新的密钥,则可以采取如下的方法:

Continue reading “使用EC2 Userdata为丢失密钥的EC2更换密钥”

查询在特定Region的某AWS服务IP地址段

2023年9月测试通过,可使用本文档查询EC2 Instance Connect的地址范围

一、背景

为了查询在特定Region的某AWS服务IP地址段,可参考详细文档,包含Windows Powershell说明,请参考官方文档:

https://docs.aws.amazon.com/zh_cn/general/latest/gr/aws-ip-ranges.html

Continue reading “查询在特定Region的某AWS服务IP地址段”

Yum 升级时候提示 “xxx packages excluded due to repository priority protections” 的解决办法

当在Amazon Linux 2上执行 yum update 时候,提示如下信息:

[root@ip-172-31-6-95 ~]# yum update
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
234 packages excluded due to repository priority protections
No packages marked for update
[root@ip-172-31-6-95 ~]#

这是由于yum组件的priority插件已经不在被使用。

Continue reading “Yum 升级时候提示 “xxx packages excluded due to repository priority protections” 的解决办法”

构建Graviton2处理器的Amazon Linux 2平台的openswan 3.0软件包

一、背景

Openswan是用于构建site-to-site VPN服务的开源软件。Openswan历史较长,在主流Linux发行版上一般没有软件安装源,无法通过yum install一步执行安装。由此需要手工编译源代码,比较麻烦。

作为替代方案,可使用libreswan,这是一个从openswan 2.6版本fork出来的分支,在Amazon Linux 2(等同CentOS7)系统上有软件源,可以使用yum install libreswan安装。

However,libreswan的配置和参数与openswan有细微差别,例如不支持auth=esp等参数。由此,在与AWS托管的VPN网关对接时候,生成的配置文件还需要再做人工调整,以消除openswan和libreswan的配置差异。

由此本文将构建一个基于Graviton2处理器的Amazon Linux 2平台的openswan 3.0软件包,可用于在新的EC2上快速安装部署而无需从源代码编译。

Continue reading “构建Graviton2处理器的Amazon Linux 2平台的openswan 3.0软件包”

在CLI和CloudFormation中使用最新AMI

本文更新于2023年8月,加入了Amazon Linux 2023的查询方法

一、背景

在CloudFormation中,如果采用hardcode方式嵌入了当前的AMI ID,那么在未来一段时间AMI版本升级后,旧的版本就会过期,导致新创建的环境都必须再次运行yum update进行版本升级。同时,当AMI版本达到一定时间后,因为版本较旧存在安全隐患,可能会下架无法调用,这时候CloudFormation就失效了不能在运行。由此,需要一个在CloudFormation中能使用调用到最新AMI的办法。

本文将分别介绍在AWS CLI下调用最新AMI ID和在CloudFormation中调用System Manager查询的方法。

Continue reading “在CLI和CloudFormation中使用最新AMI”

在使用Windows Server 2019 (1809)的EC2上安装WSL运行Ubuntu Linux

一、背景

在Windows 10上可以使用WSL和新的Terminal直接运行Linux,同时,还可以通过Windows Store在线商店安装需要的Linux发行版。但在Windows Server上,没有在线商店可用。因此,安装方法可以参考如下。

首先检查确认版本高于 Windows Server 2019 (version 1709) 版本。例如EC2上选择Windows Server 2019的话版本是1809版本,可运行WSL 1。如果系统版本是1903或者更高可运行WSL2。

Continue reading “在使用Windows Server 2019 (1809)的EC2上安装WSL运行Ubuntu Linux”

使用IAM创建日常Admin账户并设置留底账户

一、背景

当系统规模不大时候,通常一个AWS Account(账户ID是12位数字)只有几个高权限管理员负责云平台运维,此时可能大家共享同一个登录用户名,由此带来审计不便,且存在安全风险。

由此,可考虑将根账户(root账户)或者一个最高权限的IAM用户作为留底账户保护起来,并额外创建几个新的管理员账号下发给团队。同时,新创建的管理员账号对留底账号和其他管理员账号没有修改权限,以避免各自串通和干扰,确保各自的独立性。

Continue reading “使用IAM创建日常Admin账户并设置留底账户”