用于安全的azure cis扫描仪
azure_cis_scanner的Python项目详细描述
角色::raw-html-m2r(raw)
:格式:html
azure_-cis_scanner
==
cis azure benchmark 1.0的安全合规性扫描工具
互联网安全基准测试中心CTICES于2018年2月20日发布。此repo的灵感来自aws的一个类似扫描仪scout2。
此项目尚未准备好生产,只能从未暴露于不受信任网络的本地计算机上运行。
-————————————————————————————————————————————————————————————————image::images/cis_test_vm_section.png?raw=true
:target:images/cis_test_vm_section.png?raw=true
:alt:azure cis scanner homet
此扫描仪还允许跟踪一段时间内的进度
image::images/cis_test_secure_transfer_graph.png?raw=true
:目标:images/cis_test_secure_transfer_graph.png?raw=true
:alt:azure存储:未启用安全传输
raw数据的格式将与azure api以json格式返回的格式相同。
raw数据将根据名称按文件中的主要cis部分显示。
代码块:
标识和访问管理日志和监视
安全中心网络
存储虚拟机
SQL服务其他杂项项
筛选的数据将位于由查找命名的文件中,并具有以下格式
…代码块:
{
"应该打开威胁检测":{
"元数据":{"列":["区域"、"服务器"、"数据库"],
"查找":"应该打开威胁检测"}
"状态":{"已检查项":10,"标记项":4},
"items":[
('us-west-1'、'server01'、'db011')
('us-west-2'、'server02'、'db021')
('us-west-2'、'server02'、'db023')
('us-west-2'、'server02'、'db024')
]
}
"本节中的另一个发现物":……
入门
----
最佳做法是在Docker容器中工作,以避免多租户环境中可能出现的任何问题。
如果从本机命令行运行,请注意多订阅调用,如Permissions.sh只能看到正确的目标
在`~/.azure/目录``中的订阅。
容器当前是pshchelo/alpine-jupyter-sci-py3的基础,上面是Microsoft/azure cli dockerfile。
我们将用更正式的(nbgallery或jupyter)docker映像替换pshchelo基础,并在将来调整映像。
创建了一个azure帐户或已被授予具有足够权限运行扫描仪的凭据。
我们将在容器外部登录一次(将creds与~/.azure中的任何内容合并)以获取正确的订阅ID,然后在容器内部再次登录
以将自己限制在cor仅限矩形凭据。
configure
^^^^^^^^^
代码块:
$git clone git@github.com:praetorian inc/azure-cis-scanner.git&;cd azure-cis-scanner
代码块:
$git clone https://github.com/praetorian-inc/azure廑cis廑scanner.git&;cd azure廑cis廑scanner
copy azure廑cis廑scanner/.env sample to.env。这是一个特殊的文件名,控制docker compose并位于.gitignore中。
…代码块:
azure_cis_scanner$cp.env sample.env
根据需要编辑azure_cis_scanner/.env文件。
如果要进行开发,请打开docker-compose.yml并取消对标记为"开发模式"的行的注释
代码块:
azure_cis_scanner$docker compose up
代码块:
azure-cis-scanner$docker ps
azure-cis-scanner$docker exec-it<;容器id>;/bin/bash
/根目录/.azure。
这允许您停止并启动容器,而无需在令牌的生存期内重新登录。
。代码块:
bash-4.4$az account set--subscription<;choice from above>;
edit report/settings.py for your active\u subscription目录。这可以是任何内容,但约定是友好名称和上面"account list"中正确"id"的前8个字符。由于它被安装到容器中,因此它将在容器内外发生变化。
sample deploy(可选)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
,示例deploy/terraform azure运行得最好。首先我们需要将terraform添加到容器中。代码块:
apk add terraform
代码块:
terraform init
terraform apply
您可能需要重新登录,因为terraform在令牌上有很短的超时时间。
请记住在完成后销毁资源
。代码块:
terraform destroy
mmand在jupyter笔记本中设置变量并运行它。或者,在第一次运行时,可以使用"docker compose up"的url
输出登录到笔记本并逐步完成调用。使用订阅ID和基本目录的适当参数编辑下面的行。代码块:
bash-4.4$cd/praetorian tools/azure-cis-u scanner/scanner
scanner$run-jnb-a'{"订阅ID":"510f92e0-xxxx-yyyy-zzzzz-095d37e6a299","基本目录":"/engagements/cis-test"}'-v azure-cis-u scanner.ipynb-t 500
在编辑器中修改上述内容,并将其全部粘贴到shell中。
当前没有进度报告,但如果打开Sublime,则可以查看在基本目录中创建的文件。
如果未按预期创建文件,请在"运行"JNB输出中搜索线索,或者更好地,转到浏览器中的jupyter笔记本,单步浏览单元格,直到出现错误。
当扫描器在新的一天运行时,将创建一个新文件夹。
浏览报告
^^^^^^^^^^^^^^^^^^^^^^^
此时,您的基本目录应该已经填充了如下所示的文件
。image::images/cis_test_azure_scanner_files.png?raw=true
:目标:images/cis_test_azure_scanner_files.png?raw=true
:alt:raw和筛选生成的文件
在容器中,我们现在运行一个flask应用程序,将生成的html页面与报告一起服务器化。
……代码块:
bash-4.4 scanner$cd../report
bash-4.4 report$python3 app.py
浏览到127.0.0.1:5000查看报告。通过ui进行订阅切换尚未工作。
当前,只有两天的数据后,才会显示图表。
请求具有正确RBAC的凭据以运行扫描仪
在zure环境中,您应该要求尽可能少的
权限。
owner生成最小权限角色定义和临时键
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^r为测试人员生成最小cred的权限。
获取用于生成自定义角色定义和临时存储访问密钥的minimal_tester_role.json和permissions.sh脚本。
。代码块:
$git clone https://github.com/praetorian inc/azure戋u cis戋u scanner.git
代码块:
$docker pull microsoft/azure cli
使用本地mount`-v.azure/:~/.azure``持久化cred是可选的。
…代码块:
$cd/path/to/working project
$cp/path/to/azure-cis-scanner/{permissions.sh,minimal-tester-role.sh}。
working project$docker run-it-v.azure/:~/.azure-v.:/workdir
bash-4.3
bash-4.3提示下,我们现在位于容器中。登录时间。
…代码块:
通过Web用户界面登录完成登录。
通用电气键代码块:
bash-4.3/workdir/permissions.sh
脚本创建AzureSecurityScanner角色定义。所有者现在将该角色与
用户关联,并可以复制生成的(资源组、帐户、SAS密钥)元组,并将其安全地发送到pen tester。
d密钥元组-例如(资源组、服务器、数据库)-
,仅在yaml中受支持。尝试使用safe_yaml,但元组导致错误。其目的是让"raw"数据尽可能少地从cloud api中提取,尽可能接近交付的格式存储。:raw-html-m2r:`<;br>;`
我们将来可能从元组切换到嵌套dict。
roadmap
----
*进一步开发用于部署不安全测试环境的自动化的NT。
*添加到"修正"文件夹中的修正脚本以自动解决许多简单的"打开"问题。
*使用Python sdk而不是bash。
*用Praetorian Flask包装Flask项目以确保安全。仅在本地网络上运行,直到完成此操作。
*通过生成具有正确订阅/资源组路径的minimal_tester_role.json来删除手动步骤。
*容器当前是pshchelo/aline-jupyter-sci-py3的基础,顶部是Microsoft/azure cli dockerfile。
*用更正式的(nbgallery或jupyter)Docker图像替换pshchelo基础,并在将来调整图像。
*添加Git挂钩以自动删除azure_cis_scanner.ipynb的单元格输出,以避免签入敏感信息
是确保云环境安全的第一个好工具,以确保采用了最佳做法和安全配置设置。
但是,除了一些基本的现在设置不正确。azure在不断发展,secops团队的一部分挑战是在每月发布新工具的环境中跟上最佳实践。
EventGrid和许多其他高级功能。
需要手动渗透测试?Praetorian在云、物联网、Netsec等领域拥有专业知识。