使用NLB或GWLB搭建多VPC的Traffic Mirror流量采集架构

一、背景

在上一篇博客《使用VPC Traffic Mirror功能进行流量审计》中,我们介绍了使用VPC Traffic Mirror采集7层访问日志,不过采集架构局限在单VPC、单EC2。

那么如何构建一个跨VPC、多VPC、跨账号专门的日志采集架构?本文解答这一需求的设计。

Continue reading “使用NLB或GWLB搭建多VPC的Traffic Mirror流量采集架构”

使用VPC Traffic Mirror功能进行流量审计

一、背景

1、使用Traffic Mirror的场景

对于简单的网络流量采集需求,可以使用VPC Flowlog功能,之前这篇博客介绍了VPC Flowlog的使用。不过VPC Flowlog也有局限,主要是仅记录OSI模型的第四层的日志信息,也就是所谓的“五元组”,即源地址、源端口、目标地址、目标端口、协议这五要素,很多时候不能满足日志需求。

如果需求进一步增加要求如下日志能力:

  • 7层流量采集,记录域名、HTTP header等
  • 旁路方式,不影响流量
  • 相对低成本
  • 不希望使用复杂的Network Firewall或者第三方NGFW+Gateway Load Balancer方案

以上需求场景,适合使用VPC Traffic Mirror实现。

Continue reading “使用VPC Traffic Mirror功能进行流量审计”

针对S3存储的勒索攻击的防护以及关闭SSE-C的方法

一、针对S3存储的勒索攻击事件背景

近期有一片文章《亚马逊安全机制被用于勒索攻击,全球数千家机构已成为攻击目标》,原文在这里。引用部分文字如下:

据报道,勒索组织已经开始加密全球数千家机构在亚马逊云存储的数据。
与传统的勒索软件攻击不同,此次攻击没有利用任何系统漏洞,
而是利用了亚马逊云服务本身的安全机制,制造了一个几乎无法破解的困境,
迫使受害者不得不选择支付赎金。

勒索组织首先获取了受害者的亚马逊账户凭证,
这些凭证具有读取存储数据和写入加密工具的权限。
随后,他们利用亚马逊的服务器端加密工具(SSE-C)将客户的数据重新加密,
使用户无法正常访问,并向要求受害者在七天内支付赎金,
否则将永久删除所有加密文件。

这篇文章对整个攻击事件过程描述的比较模糊,文中提到“勒索组织首先获取了受害者的亚马逊账户凭证”,但转而又提到“此次攻击没有利用任何系统漏洞,而是利用了亚马逊云服务本身的安全机制”。这两句前后矛盾的表述让许多人感到困惑,并担心自身系统安全。

为此,AWS官方也有一篇博客针对类似攻击事件给出了一些信息,英文原文在这里。基于这两篇文章,本文介绍下类似勒索攻击的由来,以及类似的防护方法。

Continue reading “针对S3存储的勒索攻击的防护以及关闭SSE-C的方法”

使用S3存储的SSE-C方式加密数据

一、背景

在一些对数据安全有较高要求的场景中,需要对S3上的数据进行加密。有时候可能会遇到以下需求:

  • 合规要求,必须加密
  • 强度要高,例如AES256
  • 加密要简单,最好是对称密钥,加密和解密都是同一个密码
  • 与IDC、多云等兼容性问题,不能使用AWS KMS服务来管理密钥,用户自管理密钥
  • 不希望编写加密代码
  • 不希望应用层承担加密运算的开销

在以上情况下,可使用S3服务的SSE-C功能来满足以上加密需求。

此时可能有同学有疑问,在创建S3存储桶界面上选择加密算法的位置,并没有SSE-C加密方式的选项,那么它是如何运作的?这要从S3的几种加密方式说起。

Continue reading “使用S3存储的SSE-C方式加密数据”

在EC2 Linux之间免密码登陆

一、背景

1、应用场景

在云上用EC2运行一些集群式应用的时候,需要让多个节点之间可以无缝的访问,互相具有可信的权限,也就是通常说的免密码登陆。通常,在AWS云上的EC2默认是证书方式登陆的,那么这种免密码登陆与EC2内置的证书登陆有何区别?请看本文讲解。

Continue reading “在EC2 Linux之间免密码登陆”

KMS – 云上数据加密和保护

本文讲解加密相关知识、信封加密原理、KMS密钥类型、KMS与实际服务集合使用。同时针对常见的加密需求,本文将介绍AWS Encrption SDK对文件加密场景,并给出AWSCLI、CLI命令示例、Python代码示例供参考。此外,本文还介绍了使用KMS保护Data Key并使用对称加密算法对字符串加密、非对称加密算法对字符串加密等场景,同时也给出了Python代码示例。

Continue reading “KMS – 云上数据加密和保护”

使用SAML协议、以Amazon IAM Identity Center为SSO平台、配置单点登录AWS控制台

一、背景

1、什么是SAML

SAML是用于单点登录认证的通用协议,以XML格式为基础进行配置交换。负责用户认证的系统可被称为SSO平台,可以是基于Active Directory Federation Service构建,也可以是用户自行开发的统一认证平台。应用系统指的是与SSO平台对接的业务软件,例如OA、ERP、代码管理系统等软件。当使用SSO方式登录时候,应用系统本身不需要额外管理用户分组、密码、校验等,也就避免了在多个应用软件之间同步用户清单、同步用户密码的麻烦。

使用SSO是安全领域的最佳实践之一。

Continue reading “使用SAML协议、以Amazon IAM Identity Center为SSO平台、配置单点登录AWS控制台”

通过AWSCLI修改安全规则组允许EC2公网登陆

一、背景

在AWS安全最佳实践中,为EC2分配公有IP地址并开放安全规则住允许从互联网上任意地址(也就是来源为0.0.0.0/0)访问操作系统的SSH/RDP是非常不安全的,有非常大的安全隐患。以近期的SSH漏洞

 https://explore.alas.aws.amazon.com/CVE-2024-6387.html 

为例,这样开放端口可能导致几分钟内系统被侵入。为了规避这个安全风险,一般采用如下方式:

Continue reading “通过AWSCLI修改安全规则组允许EC2公网登陆”

安全改进解读:S3将阻止Public公开访问和禁用文件ACL两项功能作为新创建存储桶时候的默认设置

摘要:本文介绍了2023年以来S3将阻止Public公开访问和禁用文件ACL两项功能作为新创建存储桶时候的默认设置这一变化由此带来的安全方面的改进。同时,介绍了在此场景下如何配置存储桶公开对外发布数据。

一、背景

在S3控制台上,可以看到如下信息:

The S3 Block Public Access and S3 Object Ownership features provide settings to manage public access and object ownership for your Amazon S3 resources. All Block Public Access settings are enabled by default, and all new buckets, access points, and objects do not allow public access. By default, Object Ownership is set to bucket owner enforced, which disables the use of access control lists (ACLs).

These default settings have been in place in the S3 console since 2018 and 2021, respectively, and are recommended security best practices. Since April 2023, these default settings apply to all new buckets, regardless of how they are created. If you require public access, you can edit the Block Public Access settings, and grant access by using bucket policies. Unless you need to control access for each object individually, using ACLs to grant access isn't recommended. For more information, see Access control best practices.

以上两项功能,分别推出与2018年和2021年,之前是可选配置,目前成为了新建存储桶Bucket时候的默认配置。本文对这两个功能的使用进行介绍。

Continue reading “安全改进解读:S3将阻止Public公开访问和禁用文件ACL两项功能作为新创建存储桶时候的默认设置”

使用Session Manager Plugin插件在开发者本机创建本地转发功能用于登录位于私有子网的EC2 Windows RDP远程桌面

摘要:本文介绍了如何不需要将EC2 Windows的3389端口暴露在互联网上,而是通过System Manager转发3389端口到开发者本机的方法。EC2 Windows可以一直位于内网,其安全组也无须放行任何端口,即可实现安全管理。

Continue reading “使用Session Manager Plugin插件在开发者本机创建本地转发功能用于登录位于私有子网的EC2 Windows RDP远程桌面”

使用Athena分析在S3上的WAF Log

一、背景

在使用WAF保护业务系统的过程中,经常需要查询历史日志,分析特定防护对象的防护效果,查看拦截的请求,或查看访问特定URL的防护效果。这时候就需要用到WAF日志功能。

AWS WAF支持将日志输出到CloudWatch Log Groups,Kinesis,以及S3。将日志输出到CloudWatch Log Groups使用方便,但是存储成本高;将日志输出到Kinesis后可连接多种投递方式,灵活且延迟低,但技术架构稍微复杂。将WAF日志存储到S3数据湖,可实现最低低成本储存日志,通过Athena可快速方便查询。

Continue reading “使用Athena分析在S3上的WAF Log”

如何在多账号和单账号选择

提示:本文详细阅读需要20-30分钟时间

概述:本文以使用S3+Glue+Redshift+MWAA(Airflow)为例,介绍使用两种不同方式区分Prod环境和Test环境的权限。

目录如下:

  • 一、如何定义多账号和单账号
  • 二、多账号的隔离效果测试
  • 三、单账号下多用户的隔离效果测试
  • 四、二者对比
  • 五、小结
Continue reading “如何在多账号和单账号选择”

使用CloudFront发布EC2上的应用并使用Managed prefix功能限制EC2只接受CloudFront回源流量

一、背景

CloudFront使用的一般场景是发布ALB上的应用,而ALB又是发布一组EC2应用。CloudFront也支持直接发布EC2不使用ALB。当然这是不推荐的,因为ALB会提供了更好的多机流量调度,通过目标组实现健康检查,确保要发布的应用正常对外提供服务,并具备水平扩展能力。

此前,如果希望对ALB和EC2做限制,使其只允许来自CloudFront回源流量,并且不再接受其他互联网访问,那么这个需求常见的解决方案是:

Continue reading “使用CloudFront发布EC2上的应用并使用Managed prefix功能限制EC2只接受CloudFront回源流量”

使用WAF检查Referer Header对外部引用进行干预

一、背景

在CloudFront的控制台上,提供了一个TOP Refer的报表,这个报表用于显示本站的用户来源是来自哪个原始网站。这个机制是如何工作的呢?

假设如下的场景:

  • 主网站名为 https://www.abc.com/index.html
  • 图片的域名为 https://image.abc.com/image01.png

当客户端浏览器打开主网站时候,浏览器会向图片域名image.abc.com服务器的发送一个图片访问请求,并包含一个特殊的HTTP Header名为Referer。Referer Header的内容就是之前所在页面的域名,即www.abc.com。因此,图片服务器只需要检查Referer域名,即可获知引用此图片的原始网址。Referer Header可以被WEB应用服务器获取,并在应用层代码做判断。更高效的办法,是从客户访问前端的CloudFront和WAF上进行干预,来判断是否是合法的引用。

需要注意的是:检查Referer并不能完全阻断所谓的“盗链”和非法链接,因为攻击者可以简单去构造Referer Header来模拟一个正常请求。所以实施Referer检查的意义是可以避免图片等素材被其他网址的浏览器简单引用,可减少由此产生的外部流量等问题。如果需要100%的阻止外部访问且必须所有资源都经过身份验证,请参考CloudFront Signature签名功能。

下边介绍如何通过WAF检查Referer Header。

Continue reading “使用WAF检查Referer Header对外部引用进行干预”