阿青姐姐教你:微服务⽹关与devops在⽹络渗透的运⽤
2021-10-21 22:46:34 Author: mp.weixin.qq.com(查看原文) 阅读量:26 收藏

本文作者:阿青(Python安全星球合伙人)

【Python安全开发】主要面向有一定实战经验的中高级网络安全从业人员。课程架构以python语言作为主线,兼顾ruby、go、c++、nim等多种语言,同时以开源的c2框架viper和自研的信息收集框架meteor为例,系统梳理信息收集、初始接入、横向渗透、持久化等全流程渗透思路,尽可能实现网络攻击的自动化、标准化。

通过这门课程,学员能够从开发的角度看待网络渗透的主脉络,利用数据发现更多攻击面,加深对各类攻击工具的理解,进而锤炼更强的内功修为,更好掌握在纷繁复杂网络安全领域的主动权。最后,课程还介绍了人工智能在网络攻击领域的一些工程实践,为学员提供了一种全新的视角

讲师介绍:

阿青Ms08067安全实验室核心成员,现任某安全公司产品开发经理,主要在安全运维自动化、攻击行为发现、web漏洞集成扫描、大数据产品开发等方面有多年工作经验。

这节课的开始,我们尝试探索三个问题:

●如何快速搭建我们的基础设施

● 如何实现⽹站发⽣变化即触发扫描 

●如何更低成本的优化⽹络

对⼀般的Hacker来说,上述问题并不需要考虑,⼯具的使⽤简单、直接最好,但是站在企业视⻆,我们就不得不考虑⼀个⼯具是否能兼容当下的⼯作流,是否易于部署、易于集成、易于扩展。这节课通过三个场景作为引⼦,期待⼤家发现更多的问题。⾄于微服务、DevOps这些概念,莫衷⼀是,也许最简单的理解就是:当⼤部分运维、开发、部署、测试⼯作都可以⽤代码进⾏控制,那么就认为实现了DevOps。

第⼀个问题:快速搭建基础设施

假如你有⼀千台主机,其中100台作为扫描器使⽤,100台⽤于Mysql……如何去做?对于安全开发者⽽⾔,聚焦的可能是C2的部署、VPN的搭建,假如不使⽤云环境的话,我们的解决⽅案有Puppet、Chef、Ansible、Saltstack等。我们以Python作为教程,⽽且最好是专注⼀些简单的⼯具,所以,这⾥就以Ansible⼯具为主,讲解⼀下AWVS的⾃动化搭建过程。

⾸先,使⽤Ansible必须要理解它的核⼼概念,这⾥推荐《ansible中⽂权威指南》

https://ansible-tran.readthedocs.io/en/latest/docs/intro.html

好了,我们的时间不多,这⾥就直接开始上代码:

⾸先是整体结构:

●group_vars 定义了我们的⼀些变量信息,例如YUM的中⽂镜像源 

●roles 定义了我们的 ⻆⾊ ,也就是要安装什么东⻄ 

●awvs.yml 是 剧本 ,我们如何去安装

●hosts 定义我们的主机列表,安装到哪些主机上 

●其余的是我们⾃⾏实现的⼀些脚本

运⾏过程

当我们输⼊下⾯命令时

ansible就会在你定义的主机列表中执⾏安装过程.例如我使⽤了 vagrant 搭建了2台虚拟机。分别为node1,node2。它在 hosts 中定义如下:

当我们运⾏结束之后,微信机器⼈就会通知我,某台机器已经部署完成awvs,如图:

具体实现

⾸先是 awvs.yml ,这⾥写的内容是:

也就是说,我们需要按照顺序安装docker docker-compose awvs infos这四个⻆⾊。docker是为了我们能够pull最新的awvs镜像。我们⼀个⼀个的来讲解。

⻆⾊1:Docker

⽬录如下:

main.yml 是⻆⾊的⼊⼝,内容如下:

这⾥有五个⼯作流(tasks),如图:

这么⼏个流程,调⽤了ansible中的shell模块、template模块、systemd模块。具体模块的⽤法,⼤家去查查⽂档。值得注意的是这个 添加⽤户到docker组 的这个任务。

其中⼤括号括起来的内容是变量,值在group_vars下定义。

⻆⾊2:docker-compose

这⾥就直接使⽤daocloud的⼀键脚本进⾏安装。内容如下:

⻆⾊3: awvs

这⾥部署awvs,就直接使⽤ secfa/docker-awvs 的镜像。通过docker_image_info、 

docker_image、docker_container来启动我们的这个docker镜像

⻆⾊四:通知

这⾥是写

了⼀个简单的脚本 python-awvs.py ,⽤于将awvs的api_key信息发送给微信机器⼈,requirements.txt是它的依赖信息。

我们将脚本复制到远程主机上,然后运⾏脚本,即能够对awvs做⼀定的配置。

总结

这⾥使⽤awvs的⾃动化搭建来说明ansible的基础⽤法,也就是⽆论我们的hosts有多少个,我们总可以通过这样的⽅法来实现批量化搭建和运维。

第⼆个问题:⽹站发⽣变化即触发扫描

这⾥引⼊⼀个持续集成平台:CircleCI。这⾥引⼊⼀个新的场景,从蓝队的⻆度出发:

开发⼀个新⽹站,当我git push到远端时,⽹站⾃动部署到vps上,并且使awvs扫描这个站点,最后将扫描报告发到微信上

git push这⾥可以理解为⼀个事件通知,当某个事件来时,触发⼀系列操作,并能够形成通知。具体如何去做?

⽹站的⾃动化部署

⾸先,我们需要在CircleCI上注册⼀个账号,然后授权我们的github账号。我们这⾥创建了⼀个新的仓库:

假设这个是我们即将上线的新⽹站, app.js 内容如下:

CircleCI配置⽂件书写

在 .circleci/config.yml 中添加:

这⾥的jobs类似ansible中的tasks。具体的含义我通过注释进⾏了说明,简单来讲就是当检测到 gitpush 之后,circleCI⾃动帮我们ssh到远程主机,运⾏我们的deploy脚本。

deploy脚本

脚本⾸先进⼊我们⽹站⽬录下,然后pull最新的代码,最后通过pm2进⾏部署。

配置CircleCI允许登录vps

●创建⼀个CircleCI⽤户 useradd -m -d /home/circleuser -s /bin/bash circleuser 

●创建ssh-key ssh-keygen -m PEM -t rsa -f ~/.ssh/circleuser 

●允许免密登录 

●将私钥复制到CircleUI 项⽬配置中Bash 复制代码配置CircleCI允许登录vps 

配置github的deploy key

对于私有仓库,git pull需要⼀定权限,所以在vps上可以再⽣成⼀个ssh密钥。并将密钥假如到github的deploy key中。

测试

当输⼊ git push 时,CircleCI会⾃动执⾏ config.yml 中的流程,如图:

并且可以通过访问vps地址,查看⽹站的部署情况:

启动awvs

那么当⽹站⾃动部署成功时,awvs即开始扫描的功能就很简单了,只需要在vps上的 deploy.sh 上加⼊⼀⾏代码:

如果从红队视⻆,可以设置为每天定时更新⼀个txt列表,并且写⼀个diff脚本,如果列表中的⽹站发⽣了变化,就重新扫描⼀次。

第三个问题:更低成本的优化⽹络

⽹关需要解决以下问题:

●⽹络代理 

●负载均衡 

●中间件(限流、熔断、权限认证、流量统计) 

●微服务管理回到上⾯第⼀个问题,当我们部署的服务成千上百,我们如何去管理?所谓的微服务,它的本质是将⼀个应⽤拆分成多个部分,例如web扫描、http存活性判断等等。不同应⽤通过⽹关的相互通信来降低开发成本。类似于下⾯的⽹关系统DEMO:

对于安全⼈员来讲,微服务最好的理解⽅式就是API,⼀个API接⼝就是微服务。这也就是我们课程始终要提的接⼝优先。正是因为开放了接⼝,我们才能单独的把代理、权限这些复杂技术内容单独剥离出来单独解决。

总结

上述内容并不适合所有同学,对于正常⼯作⽽⾔,不需要把⼯作扩展到这样复杂的地步,在团队少于10⼈的情况下,微服务、devops这些概念并不适合,需要的维护成本过重,⽽且技术过于复杂,⽂中所介绍的内容仍然只是庞⼤体系的冰⼭⼀⻆,还有pass、sass、iass、fass等等。但是,如果对⾃身技术能⼒有所期待,这些内容始终是摆在前⾯的⾼⼭深⾕,跋⼭涉⽔,总要蹚⼀蹚。

听阿青姐姐更多课程扫描下方加入星球


扫描下方二维码加入星球学习

加入后邀请你进入内部微信群,内部微信群永久有效!

 

 

来和5000+位同学一起加入星球学习吧!

文章来源: http://mp.weixin.qq.com/s?__biz=MzU1NjgzOTAyMg==&mid=2247496281&idx=1&sn=890047a59ac36d13775a678f27f8138e&chksm=fc3c4b58cb4bc24e9e1567b0586c72f1d885b465fe4dd7b751a1727e36231eceeebdafb0370d#rd
如有侵权请联系:admin#unsafe.sh