xuing
- 关注

前言
目前RASP类的产品,如雨后春笋般涌现出来。
RASP如同为应用程序注射疫苗般,为应用程序自身增加应对攻击/漏洞的免疫能力。
RASP中的防护代码也得益于可以站在程序内部对行为进行监控和拦截,使得其有着明显的高检出、低误报的特性。对于加密请求、混淆绕过的攻击检测也有得天独厚的优势。
WAF与RASP的对比区别
RASP的相关技术原理、特性,包括检测技术的分享已经有很多师傅分享过了,这里想介绍一个RASP在使用时常遇到的一个痛点:安装部署
万事开头难,而RASP的安装部署可能是阻碍很多师傅尝试使用的第一个拦路虎。
目前想要部署RASP虽然已经有大量的文章介绍,但仍是一个技术活,首先要懂得如何通过k8s、Docker-Compose之类的容器工具部署管理后端。
为了部署Agent探针,接下来又要简单了解JavaAgent、php扩展等相关技术。
最后再对中间件的启动脚本、环境变量亦或者是dockerFile进行二次修改。
等到卸载时又是同样的操作。
如此繁琐的过程中,还要时刻小心不能影响到业务线的正常运行,如果在重启应用程序时,发生错误,
难免手忙脚乱,身心俱疲。
再者,有时只是想简单的检验一下RASP的能力、或者仅仅是某个特殊的时间段,开启RASP,作为安全能力的兜底。此时降低安装部署成本就更为必要了。
此时,不免就想通过一些工具、策略将上述过程更加透明更加易用,使得更多安全从业者、普通程序员、运维等能将RASP这项"新技术"利用起来。这也就是本文想介绍的一种降低安装部署RASP成本的方式。
管理后端-SaaS化
SaaS(Software-as-a-Service),软件即服务。其实笔者对SaaS产品的理解也很浅薄,在我看来简而言之,就是通过统一的SSO登录,在云环境下使用产品。而无需考虑自行部署、维护硬件资源等繁杂事项。
笔者参与开发的应用威胁自免疫(AntiyRASP)就是采取的此种方式,AntiyRASP的管理后端以多租户架构提供SaaS化服务平台的。当用户想要使用AntiyRASP产品时,只需要在安天垂直响应平台(vs.antiy.cn)上登录、免费申请,即可开通对应的服务。
随后平台会自动分配相应的计算资源,用户可以访问自己的管理后端了。
PS:针对跨租户的数据安全性,会依据具体需要,会通过分字段、分表甚至分库的方式来隔离数据。这一块的安全性还是很有保障的,无须担心。
更进一步,管理后端支持用户与租户的多对多关系,以及进一步的管理员与审计员的权限划分。方便安服师傅、安全专家等在云端为企业排查处理安全告警等。
每个租户下又可以创建多个应用,每个应用可以对应多个微服务,方便应对复杂的真实场景。这里不是本文重点,就不过多赘述。
Agent-一键部署脚本
解决了管理端的部署问题,但RASP毕竟是一个要和实际业务应用绑定到一起的。不免涉及到Agent探针的安装、注入问题。
针对JAVA语言的agent注入问题,JVM已经提供了比较好的解决方案,即通过Attach API 远程加载 Java agent
。可以在应用不重启的情况下,将JavaAgent注入到应用程序中。
但即使是上述所说的方法,还是需要下载相关jar包,解压,并保证环境中有JDK环境,再通过jps
等命令获取当前运行jvm虚拟机的PID进程号。然后再通过命令行进行注入...整体来说,其实也没有简单很多。如果是批量的注入,或者是重启后重复注入等需求就显得更加繁琐了。
所以在AntiyRASP这里,我们想更进一步的去简化这个注入步骤。我们采取的方式如下:
在需要被保护的主机中运行一键安装脚本
填入鉴权用的Access_Token
选择需要保护的进程或容器。将进行自动注入。
只需要三步,就可以完成业务程序的RASP注入。
注入原理
一键安装脚本,会自动下载运行AntiyRASP安装帮助程序,并注册为system daemon
。
接下来通过AccessToken鉴权,并使用wss协议将主机中可以被注入的应用程序列表和当前运行的容器列表,发送至管理后台。
后续,用户就可以在管理后台选择要保护的应用。安装帮助程序会自动将RASP注入到进程/容器中。并且在即使下次业务进程/容器重启,也会进行注入。
后续即使需要更为复杂的注入策略,通过安装帮助程序的协助也可以很方便的实现。毕竟我们的产品也是在快速迭代当中。
Kubernetes
除此之外,针对Kubernetes应用,我们也增加了相当便捷的接入方式。
管理后端会生成rasp-daemonset.yml,其中包含AccessToken。通过
kubectl apply
命令,将AntiyRASP安装帮助程序注册为一个DaemonSet。接下来只需要为被防护的应用,添加一个Label标签。DaemonSet程序就会自动将AntiyRASP注入到容器当中。
热更新能力
AntiyRASP同样具备算法策略下发、引擎热更新的能力。
得益与SaaS化平台的优势,Agent的版本管理变得非常简单,版本管理菜单中将列出目前可用的各个版本,只需要推送操作。企业下的所有应用都会将该版本设置为默认版本,并执行版本更新操作,且不影响业务的正常运行。
引擎智能下发
RASP引擎其实自身也会存在陈旧依赖的问题,以JAVA为例,低版本的JDK编译出来的引擎Jar包,业务应用程序一般都是可以兼容的,兼容性也是最佳的,但是如果RASP为了能在低版本的应用中编译,就需要使用一些老旧的依赖库,甚至引入一些安全问题/性能问题。
AntiyRASP为了解决这样的问题,引擎被编译了多份,将依赖尽可能的升级到最新,以获得最新的功能/安全更新。然后会根据业务应用程序使用的JDK版本,选择适合版本进行下发,保证安全性与兼容性的共存。以目前来说,只要是JDK11的业务程序,就可以用到最新的依赖包了。
目前除了手动添加实例以外,这个引擎的选择过程在用户侧是完全透明的。
结语
如果各位师傅觉得这个部署过程还算简便,可以在垂直响应平台https://vs.antiy.cn/rasp申请试用AntiyRASP,一般都能获取到15天的免费使用。
我们非常希望能得到各位师傅的使用反馈与批评建议,以帮助我们能更快的进步。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)