导语:随着Amazon Web Services(AWS)用户越来越多,用户的账号安全性已经成了一个不容忽视的问题。默认情况下,AWS帐户通常是安全的,但也可能发生风险,鉴于此,我找到了一些可用于检查这些安全风险的工具。
随着Amazon Web Services(AWS)用户越来越多,用户的账号安全性已经成了一个不容忽视的问题。默认情况下,AWS帐户通常是安全的,但也可能发生风险,鉴于此,我找到了一些可用于检查这些安全风险的工具。
AWS的潜在安全问题有很多,比如一台主机的安全组可以向0.0.0.0/0全开放,即用户可以从世界各地的网络进行登录,或用户可以使用亚马逊提供的S3 Management Console去管理自己的S3存储桶,通过网络随时随地的获取存储的数据。在这两种情况下,AWS帐户安全性都需要做安全检查。
收集有关AWS帐户信息主要有以下三种方法:
1.通过AWS API调用,以了解帐户当前的运行状态, 2.监控CloudTrail日志并对相关的变动事项进行报告, 3.使用AWS Config日志来了解帐户当前的运行状态。
以上这三个方法都是基于API调用。CloudTrail是一个监控工具,它可以跨亚马逊云计算服务提供应用程序编程接口调用的日志记录服务。要使用这些工具,大家就应该在具有与其相关联的Amazon EC2 使用实例配置文件作为IAM 角色的容器,可用的工具有:
1.AWS Trusted Advisor 2.AWS Config 3.Scout2 4.Prowler 5.Security Monkey 6.Cloud Custodian 7.reddalert 8.CloudSploit
下面我就对以上的8款工具进行一一介绍,以帮助大家发现AWS帐户的潜在安全性风险。
AWS Trusted Advisor
AWS Trusted Advisor于2014年7月发布,是一款应用程序,AWS在为AWS客户提供服务的过程中所积累的运营经验和最佳实践都凝聚在这款应用程序中。它用以管控AWS的用户账户,并且能够提供部署安全、可用性能以及AWS成本方面的优化建议。
AWS Trusted Advisor作为AWS支持套件的一部分交付给客户。基础账号中包含四项检测,提供了大众化的安全建议。
官方链接:console.aws.amazon.com/trustedadvisor/。
免费情况下的3项安全检查是:
1.某些端口是否是0.0.0.0/0开放的状态?像80(HTTP)和443(HTTPS)这样的端口是可以的,但是像3306(MySQL)和其他一些特定的端口如果处于开放状态,则会出现红色安全提示,因为用户无法直接从端口3306连接到AWS EC2上的MySQL。如果22(SSH)或任何其他端口打开,它将变为黄色提示。
2.你是否创建了其他的IAM用户, 因为在ec2上只能是root用户才可以运行。
3.root用户是否拥有MFA。
不过如果你付费了还会有其它的安全检查:
1.检查的S3存储桶的权限是否被其他人利用, 2.检查密码设置, 3.各种安全组检查,例如特定的检查,以确保RDS数据库不被暴露, 4.检查Route53,对于每个邮件交换记录,确保TXT记录包含相应的SPF值以拒绝电子邮件诈骗, 5.确认Checks Cloudtrail打开, 6.检查AWS ELB (Elastic Load Balancing ) 是否使用了SSL, 7.检查SSL证书是否即将过期, 8.检查IAM密码是否在过去90天内进行过改变, 9.检查暴露的访问密钥。
最后一个检查“检查暴露的访问密钥”则代表着已经把检查扩展到你的帐户之外的地方了。这么做很有必要,例如很多用户不小心将根访问密钥上传到了GitHub这样的公共代码库中。渗透测试公司Threat Intelligence对GitHub进行了一次简单扫描后,发现差不多有1万名开发者无意间上传了AWS的访问密钥。据进行测试的安全专家介绍,渗透测试小组对这些被暴露于公共代码库中的密钥进行了检测,发现都是可用的AWS访问密钥而且被黑客入侵的账户可以用于挖掘比特币。如果你是使用GitHub的开发者,同时也是亚马逊AWS的用户,那么建议你检查公开的项目页面,删除其中无意间泄露的AWS访问密钥。
但AWS Trusted Advisor 的缺点就是反应时间较长,它需要一段时间来显示检测内容,如果你想隐藏一些功能,如一个接入打开0.0.0.0/0的安全组,那么这将需要大约5分钟进行刷新。
如果你不想查看此功能,则需要在console.aws.amazon.com/trustedadvisor/home#/preferences的首选项中进行设置。另外,你每周还会受到一个这样的电子邮件,报告你这周的使用说明。
同样,如果你查看帐户中的https://console.aws.amazon.com/iam/,将看到一个“安全状态”的显示页面,其中已完成的IAM的检查会用绿色标识,而仍然需要处理的问题则用警告三角形标识。
AWS Config
亚马逊在2014年11月推出了AWS Config,AWS Config是把CloudTrail日志和一些AWS API调用功能进行了组合,你可以使用它来评估、审核和评价你的 AWS 资源的配置。Config 持续监控和记录你的AWS资源配置的信息,例如EC2,S3存储区,安全组等,并支持你自动依据配置需求评估记录的配置。借助 Config,你可以查看配置更改以及AWS资源之间的关系、深入探究详细的资源配置历史记录并判断你的配置在整体上是否符合AWS内部指南中所指定的配置要求,例如获取有关特定EC2实例的信息。如此一来,你将能够简化合规性审核、安全性分析、变更管理和进行故障排除。
简而言之,AWS Config就做了两件事:
1.记录你AWS帐户中的运行配置,
2.评估这些运行配置并通过SNS生成安全警报。
aws configservice get-resource-config-history --resource-type "AWS::EC2::Instance" --resource-id "i-05bef8a081f307783"
然后,你可以应用比如–earlier-time的查询,以查询在某个过去日期配置的EC2实例。 在这一点上,AWS Config与Netflix的Edda非常类似。 由于Edda收集了有关你的AWS环境信息,并将其存储在MongoDB中,然后提供REST API以允许数据查询。 虽然Edda提供比AWS Config更有用的查询功能,但AWS Config可以通过进行设置来改变查询条件,一旦查出数据,你可以随时通过S3 存储桶获取所需的信息,这可能比Cloudtrail更容易解密日志。
新的AWS Config 规定你可以使用AWS以及合作伙伴的既存规则,也可以定义你自己的自定义规则。规则可指向特定的资源(以id进行区分),特定种类的资源,或者以一种特殊方式标记的资源。在这些资源被创建或修改时,规则被运行,规则也可以周期性地(按小时,按天等等)被评估。
规则可以寻找任何想要的或不想要的条件。例如,你可以:
1.确保特定VPC中投放的EC2实例被正确地标记,
2.确保每一个实例关联至少一个安全组,
3.检查并确保端口22在任何安全组中都是不开放的。
当检测到问题时,它将触发SNS通知。
Scout2
2012年,iSEC Partners(现为NCC集团的一部分)的LoïcSimon发布了一个名为Scout的工具,用于审核AWS环境。在2014年,他们又发布了一个名为Scout2的新版本。开源的Scout2项目专注于在渗透测试学习平台——web for pentester上进行一次性审核。
当你运行Scout2命令时,它将生成一个静态Web目录,允许你在pentester上打开创建的report.html文件。 不过Scout2存在一个小小的漏洞,就是当重新加载页面有时点击时没有反应,但它提供了一个漂亮的UI。
点击到EC2仪表板可以看出该所查出的所有问题。
看看红色标识的“所有SSH端口”,你可以看到0.0.0.0/0对所有安全组完全开放。
它还显示了安全组所应用到的实例。
Prowler
Alfresco的Toni de la Fuente(@ToniBlyx)于2016年9月发布了Prowler,用于检查CIS亚马逊网络服务基础设施的项目。
此工具仅检测其事先所列举的安全问题,并且生成仅能在其上进行阅读的报告。
Security Monkey
Netflix的Security Monkey在2014年发布,它是在AWS账户中对监控策略的改进和不安全配置进行警报的工具。虽然 Security Monkey 主要目的是安全警报,但是也提供一些有用的工具来追踪出现警告的问题。Security Monkey支持 CPython 2.7,可以在 Ubuntu Linux 和 OS X 上运行。目前,它能检测出AWS和Google Cloud Platform(GCP)的问题。Security Monkey预计将被部署到整个EC2,并且还会配备一个PostgreSQL后端。它可以重复扫描多个帐户并生成预警信息。一旦出现预警,你就可以在其用户界面中浏览到所有问题。
以下就是显示问题的主屏幕。
而且你还能对不同的问题进行分组。
下图显示了该资源的详细信息,以帮助你更好地了解正在识别的内容。
你可以在这里查看Security Monkey的检查代码。
Cloud Custodian
CapitalOne开发的Cloud Custodian于2016年5月推出,Cloud Custodian 是一个用于 AWS 资源管理的规则引擎。允许用户通过图表、格式化输出制定策略来增强云资源的管理。它包含很多特别的脚本,这是一个轻量级而且灵活的工具。
用户可以通过它来管理 AWS 环境,确保安全策略、asg 以及无用资源垃圾收集策略被正确使用,降低资源管理的成本。Custodian 的出现是为了统一大量的各种脚本和工具来管理 AWS 账号并提供统一的操作和报表功能。
1.如果它找到没有加密EBS卷的任何EC2实例,就会终止它们,
2.如果EC2实例未被AWS环境,OwnerContact或其他标签标记,则会在4天内停止这些实例。
3.如果ELB没有使用白名单的SSL策略,则会删除该ELB。
reddalert
Prezi的reddalert于2014年发布,使用的是Netflix的Edda,而不是像其他工具那样的AWS API。
CloudSploit
CloudSploit是一种付费服务,但它有两个免费选项。一个允许你使用他们的网站来运行手动扫描,另一个是他们已经开源了其搜索引擎及其规则,以便你可以在他们的项目github.com/cloudsploit/scans下自行运行它们。
总结
本文中所提到的工具并不会检测到你的AWS帐户中可能存在的所有问题,例如,你可能会在EC2中运行旧的未打补丁的软件。
不过你可以通过调整这些工具来,例如添加或删除某些检测功能。另外,你还需要检查哪些内容必须手动完成,有时它们没有API调用,例如检查是否存在该帐户的安全联系人。
目前,还没有一个能够集成所有检测功能的工具。不过,我的建议是首先使用AWS Trusted Advisor查看你的帐户。如果你从未这样做,那么现在就这样做,因为它是一种内置的服务,可以轻松地将安全问题显示给你。