又想入坑了?

编程技术宇宙

共 2357字,需浏览 5分钟

 · 2021-10-21

大家好,我是轩辕。

很多小伙伴都在微信上问我:轩辕,搞安全开发,需要学什么编程语言呢?

今天就来详细说说这个话题,我打算从安全公司研发的产品这个角度来切入,看看都有哪些产品,以及都用到哪些语言。

安全公司的产品研发,主要是下面这些东西,下面分别来说一下。

  • WAF(Web网站应用防火墙)
  • 数据库网关
  • 防火墙、IDS、IPS
  • NTA(网络流量分析)
  • SIEM(安全事件分析中心、态势感知、大数据安全分析)
  • EDR(终端设备上的安全软件)
  • DLP(数据泄漏防护)
  • UBA(用户行为分析)
  • 杀毒软件
  • 安全检测沙箱

WAF

WAF全称Web网站应用防火墙,是一种特殊的防火墙,专门用来保护Web应用安全的安全产品,主要防御SQL注入、XSS注入、CSRF、CC攻击之类的网络攻击。

这类产品一般有两个流派。一种是基于底层网络流量来做,一种是基于nginx/openresty这类上层WebServer来做。

基于底层流量分析引擎的来做的,以 C/C++ 为主。

基于nginx/openresty引擎来做的,以C/C++Lua为主。

数据库网关

和WAF有点类似,但保护的目标不是Web应用,而是数据库。

毕竟,对于绝大多数互联网公司来说,WebServer和数据库是支撑他们业务中最重要的两个角色,所以守护好这两个东西是必须的!

数据库网关,主要负责防御对数据库的攻击,检测高危操作,数据安全备份等。

用到的编程语言以C/C++Java为主。

现在云计算时代,很多公司的业务都放在了云端,这些云计算厂商相应的也都有推出自己的安全防护服务,WAF、数据库网关、DDOS云盾三大件是标准配置。

杀毒软件

最常见的,普通人最能直接接触的应该就是安全软件了。

安全软件的开发,我之前写过一篇文章:想开发一个安全软件,怎么搞?

主要涉及到的技术有病毒木马分析、驱动开发,使用的编程语言主要是C、C++

NTA、防火墙、IDS、IPS

NTA就是网路流量分析的简称,IDS是入侵检测系统,IPS是入侵防御系统。

这类东西,主要是基于网络流量的安全检测和防御产品。涉及到网络抓包、抓包分析等东西。

一般来说,这类产品对性能要求特别高,因为通常需要处理非常大的流量数据,10Gbps的万兆网络流量分析是常规操作。

所以,这部分抓包、分析比较底层的引擎基本都是用 C/C++ 来开发。

SIEM

SIEM全称Security Information Event Management(安全信息事件管理中心),差不多就是很多公司中的大数据安全分析系统、态势感知系统之类的玩意儿。

那些看起来各种高端大气狂拽炫酷的界面,基本上都是这种产品:

这是一个安全分析平台,通过汇集多方(网络流量、日志、威胁情报、沙箱检测等)产生的数据,并对这些数据进行关联分析,然后判断有没有安全风险,产生安全告警。

SIEM,基本上很多公司都有,但真正做得好的不多,想要做好,除了数据源的高价值,对分析算法、算法模型都有非常高的要求,这方面的人才很难找。

这块偏重于业务层的分析工作,涉及各种处理,在我见到的各大公司产品中,主要是Java开发,毕竟Java背后的大数据生态是一大优势,对于数据挖掘,关联分析都是紧密相关的。

EDR

全称终端安全响应系统,是运行在终端设备上的一套软件。

其实跟我们常见的杀毒软件很像,除了具备基础的安全防御功能,保护主机免受攻击,还会将主机上发生的一些事情汇报到SIEM用于安全分析。

EDR和杀毒软件类似,也是用 C/C++ 开发。

UBA

全称用户行为分析,是基于EDR、NTA等产品的产生数据之上,用来分析用户行为的一套系统。

简单来说,这玩意根据收集到的员工的行为(电脑上的操作、上网数据等),可以分析出,这个用户是不是异常,有没有干什么坏事。

比如某个用户工作时间微信相关的IP产生的流量非常多,则很有可能判断这家伙上班经常群聊摸鱼~

这套系统是一套纯后端系统,一般也是使用Java开发。

DLP

全称数据泄漏防护,也是运行在终端设备上的一套软件,当然也有一些不在终端而以网关形式存在。

不同于杀毒软件和EDR,DLP的主要作用是防止主机上的数据泄露。一般用在一些比较重要的单位中,员工电脑上的数据非常重要,用于防止窃密事件发生。

主要涉及的技术是驱动开发技术,流量分析技术,用的编程语言也是C/C++

安全检测沙箱

病毒木马和Exploit的分析,除了传统的基于特征和规则的静态分析引擎之外,动态分析技术是另一个重要的补充。而动态分析中,则主要是以沙箱分析为代表。

所谓沙箱,就是一个虚拟的执行环境,将待分析的目标丢进去,观察并记录其行为,从而判定其威胁程度。

沙箱用到的技术主要有内核驱动开发、虚拟化技术、后端服务系统。

底层的分析引擎主要是C/C++开发,上层的安全分析主要是Python

总结

以上就是安全行业常见的一些产品了。

编程语言上面呢,C/C++是主流,尤其是在终端侧的产品上,无一例外是C/C++。

在后端的安全系统方面,涉及到流量分析等对性能要求很高的场景,也一般是C/C++,若涉及数据关联分析,则Java比较多。

除此之外,有一些小型的后端服务也会采用Python进行开发。

基本上,C/C++、Java、Python,就是安全开发领域的三大主流技术栈了。

最后限于见识有限,可能列举的不全面,欢迎大家补充。

往期硬核

浏览 41
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报