首页 > 其他分享 >hyperscan在IDS和IPS产品中的应用

hyperscan在IDS和IPS产品中的应用

时间:2024-06-03 17:03:13浏览次数:25  
标签:网络安全 gcc hyperscan IDS IPS usr && local

hypercan简介

hyperscan是基于intel的高速正则表达式匹配引擎,这个基于状态机(Automata)的引擎经过了多年开发经过不断优化与完善,效率非常之高,虽然没有pcre等对正则语法支持全面,但非常适用于网络设备。用户可以在网络设备数据面(Data Plane)使用hyperscan进行规则匹配,实现高性能DPI/lPS/IDS等应用

开源代码:https://github.com/01org/hyperscan

 

环境要求

GCC, v4.8.1 or higher

Clang, v3.4 or higher (with libstdc++ or libc++)

Intel C++ Compiler v15 or higher

依赖的库

Dependency

Version

Notes

CMake

>=2.8.11

Ragel

6.9

Python

2.7

Boost

>=1.57

Boost headers required

Pcap

>=0.8

Optional: needed for example code only

gcc 版本必须大于v4.8.1

下载 wget ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.8.2/gcc-4.8.2.tar.bz2下载源码包

# tar -jxvf gcc-4.8.2.tar.bz

# cd gcc-4.8.2.tar.bz2

# ./contrib/download_prerequisites     执行中会下载3个包,mpfr、gmp、mpc,

编译安装gmp

# cd gmp &&  mkdir build &&  cd build/

#  ../configure --prefix=/usr/local/gcc/gmp-4.3.2  &&  make && make install

编译安装mpfr

#  cd ../../mpfr && mkdir build && cd build/

# ../configure --prefix=/usr/local/gcc/mpfr-2.4.2 --with-gmp=/usr/local/gcc/gmp-4.3.2 && make&&make install

编译安装mpc

# cd ../../mpc && mkdir build && cd build

# ../configure --prefix=/usr/local/gcc/mpc-0.8.1 --with-mpfr=/usr/local/gcc/mpfr-2.4.2 --with-gmp=/usr/local/gcc/gmp-4.3.2 && make && make install

添加共享库路径

# vim /etc/ls.do.conf    加入如下内容

/usr/local/gcc/gmp-4.3.2/lib

/usr/local/gcc/mpfr-2.4.2/lib

/usr/local/gcc/mpc-0.8.1/lib

保存退出,执行ldconfig

编译gcc

# cd ../../

# mkdir build

# cd build

# ../configure --prefix=/usr/local/gcc --enable-threads=posix --disable-checking --enable-languages=c,c++ --disable-multilib

# make && make install

# yum remove gcc gcc-c++ && updatedb 卸载旧版本

# 链接到新版本

# cd /usr/bin && ln -s /usr/local/gcc/bin/gcc gcc  && ln -s /usr/local/gcc/bin/g++ g++

Cmake安装

可以查看是否安装cmake

# rpm -qa | grep cmake

cmake-2.8.12.2-4.el6.x86_64

ragel安装

下载并安装ragel

#tar zxvf ragel-6.9.tar.gz && cd ragel-6.9  &&  ./configure &&  make && make install

python版本升级(编译boost的时候需要2.7版本的python)

升级python至2.7

# wget http://www.python.org/ftp/python/2.7.3/Python-2.7.2.tgz

# mkdir /usr/local/python-2.7.2,之后编译安装,指定prefix为新建目录。

# ./configure --prefix=/usr/local/python-2.7.2

# make && make install

# mv /usr/bin/python /usr/bin/python_old

# ln -s /usr/local/python-2.7.2/bin/python2.7 /usr/bin/python

# python -V    验证版本是否正确2.7.2

pcap安装

查看系统是否安装pcap

# rpm -qa | grep pcap

libpcap-1.0.0-6.20091201git117cb5.el6.x86_64

boost安装

下载安装包

# tar -xvf  boost_1_60_0.tar && cd boost_1_60_0

#  ./bootstrap.sh    ## 生成了bjam 和b2 安装工具

#  ./b2

#  ./b2 install

hyperscan安装

# wget https://codeload.github.com/01org/hyperscan/tar.gz/v4.3.0

# tar xvzf v4.3.0  && cd hyperscan-4.3.0/ && mkdir hs_build  &&cd hs_build

# cmake ../../hyperscan-4.3.0

#  cmake --build .

#  make install

hyperscan验证

# ./bin/unit-hyperscan   验证hyperscan,提示libstdc版本问题。

#  ./bin/unit-hyperscan: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ./bin/unit-hyperscan)

# 解决方法

# find / -name libstdc++.so.6

/usr/local/gcc/lib64/libstdc++.so.6

/usr/lib64/libstdc++.so.6

# cd /usr/lib64/ && mv libstdc++.so.6 libstdc++.so.6_bak

# cp /usr/local/gcc/lib64/libstdc++.so.6.0.18 /usr/lib64

# ln libstdc++.so.6.0.18 libstdc++.so.6

#运行测试程序./bin/unit-hyperscan  OK出现下面的提示

1607307003_5fcd8efbdd192d03e3fd1.png!small

hyperscan设计目标

高性能,包括正常应用场景和边界条件下

较小的database(正则表达式编译后形成的数据)

运行于流模式时,较小的流状态数据(stream state) 。这种模式下每条流都要维护自己的流状态。

另外,还有一些设计要求或限制:

运行库必须以C实现,因为一些数据面环境不支持C++

不可以在运行时任意请求内存,用到的内存仅包 括database、匹配临时数据(scratch)和流状态(在流模式下)。

database必须是平面化(flat)的内存布局,以便可以序列化/反序列化,或者可以内存中的一处移动到另一处(这意味着内部不能含有指针)

重要概念

编译:就是将多个正则表达式编译为hyperscan database,调用编译接口时可以传入一些flags和mode等参数,控制匹配行为和运行模式,主要API:

hs_compile()

hs_compile_multi()

hs_compile_ext_multi()

匹配:就是基于编译好的database,对数据进行匹配,并得到匹配结果。

hyperscan在进行匹配时需要有一个临时数据(scratch),这块数据需要在数据面运行前就分配(不在运行时分配和释放,保证性能),且需要保 证同一时刻仅有一个匹配过程在使用同一块临时数据。

如果使用流模式,还需要预先为每个流分配流状态数据。

运行模式主要有3个:BLOCK、STREAM和VECTORED。

BLOCK模式就是对多个数据块分别进行匹配;

STREAM模式 将特定的一组数据库视为一个STREAM,为每一个STREAM维护状态信息,它可以跨数据块进行匹配;

VECTORED模式可以一次匹配多个数据块。使 用不同模式参数编译的database在匹配时不能混用。

匹配的API主要有

hs_scan()

hs_scan_vector()

hs_scan_stream()

1607307045_5fcd8f257526696b12c79.png!small

配置文件

后台配置文件hyperscan.conf 举例:

-desc this is a config file of pcre rule

-name pcre_rule

-offset 1

-depth 10

-min_payload 100

-relation 1

-action 13

-pattern ^01aa*

参数说明

desc

合法字符串

正则防护规则的描述

name

合法字符串

正则防护规则的名称

offset

整型

匹配报文payload的偏移(tcp头以后的偏移)

depth

整型

正则匹配的长度,即从offset处开始匹配的长度

min_payload

整型

最小的payload长度

relation

整型

防护组的ID??

pattern

合法正则表达式字符串

正则表达式,注意每一个防护组最多配置5个正则规则

action

整型

匹配了正则需要执行的动作:

SC_FW_DROP,SC_FW_ACCEPT,ACL_DROP_ADDBLACK,ACL_DROP_SENDRST

IPS/IDS防护引擎中的应用

正则扫描范围

TCP报文基于tcp头之后的特定偏移开始扫描正则匹配

基于防护组配置正则规则

每个防护组单独编译数据库

支持基于字符串和十六进制字节流2种匹配方式

匹配的要素

offset

depth

pattern

min_payload

action

性能相关

按照官方给出的测试实例pcapscan

测试例子:

报文2,261,924个报文,配置正则规则10000条

Streaming mode:

database compiled in 0.170277 seconds.

Total matches: 0

Match rate:    0.0000 matches/kilobyte

Throughput (with stream overhead): 674.86 megabits/sec

Throughput (no stream overhead):   674.89 megabits/sec

Block mode:

database compiled in 0.588633 seconds.

Total matches: 0

Match rate:    0.0000 matches/kilobyte

Throughput:    1074.08 megabits/sec

1607307163_5fcd8f9b218d5e6a6b332.png!small

1607307189_5fcd8fb53706a79676d0b.png!small

题外话

初入计算机行业的人或者大学计算机相关专业毕业生,很多因缺少实战经验,就业处处碰壁。下面我们来看两组数据:

  • 2023届全国高校毕业生预计达到1158万人,就业形势严峻;
  • 国家网络安全宣传周公布的数据显示,到2027年我国网络安全人员缺口将达327万。

一方面是每年应届毕业生就业形势严峻,一方面是网络安全人才百万缺口。

6月9日,麦可思研究2023年版就业蓝皮书(包括《2023年中国本科生就业报告》《2023年中国高职生就业报告》)正式发布。

2022届大学毕业生月收入较高的前10个专业

本科计算机类、高职自动化类专业月收入较高。2022届本科计算机类、高职自动化类专业月收入分别为6863元、5339元。其中,本科计算机类专业起薪与2021届基本持平,高职自动化类月收入增长明显,2022届反超铁道运输类专业(5295元)排在第一位。

具体看专业,2022届本科月收入较高的专业是信息安全(7579元)。对比2018届,电子科学与技术、自动化等与人工智能相关的本科专业表现不俗,较五年前起薪涨幅均达到了19%。数据科学与大数据技术虽是近年新增专业但表现亮眼,已跻身2022届本科毕业生毕业半年后月收入较高专业前三。五年前唯一进入本科高薪榜前10的人文社科类专业——法语已退出前10之列。

 “没有网络安全就没有国家安全”。当前,网络安全已被提升到国家战略的高度,成为影响国家安全、社会稳定至关重要的因素之一。 

网络安全行业特点

1、就业薪资非常高,涨薪快 2021年猎聘网发布网络安全行业就业薪资行业最高人均33.77万!

 2、人才缺口大,就业机会多

2019年9月18日《中华人民共和国中央人民政府》官方网站发表:我国网络空间安全人才 需求140万人,而全国各大学校每年培养的人员不到1.5W人。猎聘网《2021年上半年网络安全报告》预测2027年网安人才需求300W,现在从事网络安全行业的从业人员只有10W人。

 行业发展空间大,岗位非常多

网络安全行业产业以来,随即新增加了几十个网络安全行业岗位︰网络安全专家、网络安全分析师、安全咨询师、网络安全工程师、安全架构师、安全运维工程师、渗透工程师、信息安全管理员、数据安全工程师、网络安全运营工程师、网络安全应急响应工程师、数据鉴定师、网络安全产品经理、网络安全服务工程师、网络安全培训师、网络安全审计员、威胁情报分析工程师、灾难恢复专业人员、实战攻防专业人员…

职业增值潜力大

网络安全专业具有很强的技术特性,尤其是掌握工作中的核心网络架构、安全技术,在职业发展上具有不可替代的竞争优势。

随着个人能力的不断提升,所从事工作的职业价值也会随着自身经验的丰富以及项目运作的成熟,升值空间一路看涨,这也是为什么受大家欢迎的主要原因。

从某种程度来讲,在网络安全领域,跟医生职业一样,越老越吃香,因为技术愈加成熟,自然工作会受到重视,升职加薪则是水到渠成之事。

黑客&网络安全如何学习

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

 1.学习路线图 

 攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。

 

 (都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取

3.技术文档和电子书

技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。 

 因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取

4.工具包、面试题和源码

“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。 

 还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。

因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取

 最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…

 因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取 

标签:网络安全,gcc,hyperscan,IDS,IPS,usr,&&,local
From: https://blog.csdn.net/2401_84466336/article/details/139416049

相关文章

  • Eclipse 下 Activiti Designer 插件安装教程
    Activiti开源工作流引擎简介:什么是工作流?工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。个人理解:工......
  • 适合技术小白学习的项目1863java在线视频网站系统 Myeclipse开发mysql数据库web结构ja
    一、源码特点java在线视频网站系统是一套完善的web设计系统,对理解JSPjava编程开发语言有帮助采用了java设计,系统具有完整的源代码和数据库,系统采用web模式,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql,使用java语言开发。java在线视频......
  • 适合技术小白学习的项目1840java swing社团管理系统myeclipse开发Mysql数据库CS结构ja
    一、源码特点   javaswing社团管理系统是一套完善的窗体设计系统,对理解SWINGjava编程开发语言有帮助,系统具有完整的源代码和数据库,,系统主要采用C/S模式开发。应用技术:java+mysql开发工具:Myeclipse8.5、jdk。二、功能介绍社团管理系统要满足以下几个方面的功能需求......
  • Windows Software Tips
    WindowsSoftwareTipsscoopscoopinstallsysinternals默认的安装路径(C:\Users_user_\AppData\Roaming\Microsoft\Windows\StartMenu\Programs\ScoopApps\SysInternals)scoopstatus这个命令会列出所有有更新的软件。scoopupdateappnametracert最常用的命令是tracer......
  • AndroidStudio资料
    AndroidStudio导入jar包  Switch语句报错Constantexpressionrequired   AndroidStudio中怎样引用图片资源   新版本Logcat使用详解java反编译jar包并修改class重新打包   Jar包反编译后修改源码再编译java.lang.NoClassDefFoundError:Failedresolutionof:......
  • 1940java swing零售库存管理系统myeclipse开发Mysql数据库CS结构java编程
    一、源码特点   javaswing零售库存管理系统是一套完善的窗体设计系统,对理解SWINGjava编程开发语言有帮助,系统具有完整的源代码和数据库,,系统主要采用C/S模式开发。应用技术:java+mysql开发工具:Myeclipse8.5、jdk。java零售商品库存管理系统二、功能介绍零售库......
  • 1882java密室逃脱管理系统 Myeclipse开发mysql数据库web结构java编程计算机网页项目
    一、源码特点java密室逃脱管理系统是一套完善的web设计系统,对理解JSPjava编程开发语言有帮助采用了java设计,系统具有完整的源代码和数据库,系统采用web模式,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql,使用java语言开发。二、功能介绍(1)......
  • Ubuntu server 24 (Linux) Snort3 3.2.1.0 Guardian IPtables 联动实战 主动防御系统(
    一  Snort3安装配置,参考:Ubuntuserver24安装配置snort33.2.1.0网络入侵检测防御系统配置注册规则集-CSDN博客二  安装主动防御程序Guardian1下载,解压tarzxvfguardian-1.7.tar.gzcdguardian-1.7/2 配置#拷贝文件sudocpguardian.pl/usr/local/bin/......
  • AndroidStudio升级Gradle到7+,compileSdkVersion 33+
    一、概述由于需求方的要求/需要,主动或被动的需要升级android的编译环境到CompileSdkVersion33。此时直接更改android项目的编译版本会报错,as版本过低或者gradle插件太老了等。也会遇到一些这样那样的bug,这一篇做一下简单的总结升级方式:以更......
  • DVWA-Weak Session IDs
    用户登录之后,服务端会创建一个session,里面存储用户的状态和相关信息。而为了缓和客户端的存储压力,客户端只存储一个session_id,一般session_id放在cookie中。如果session_id被劫持,黑客可以使用其登录直接登录到目标账户。题目有点没看懂拿HighLevel举例,只拿到PHPSESSID就......