交叉编译出现skipping incompatible_为树莓派编译openvas漏洞扫描工具

a333bf51966e8b0bf54b5ad18ac48be9.png

openvas干啥用的还有该扫描器是怎样的体系架构不是本文的重点,如需了解请查阅官网文档或openvas - 搜索结果

本文着重介绍如何为树莓派搭建交叉编译环境以及编译openvas软件的最优流程

1.安装编译主机操作系统,因为目标平台是raspbian,编译主机操作系统应尽量一致,故安装Debian 9.7,虚拟机的话尽量分配足够多的核心数,有助于提高编译速度。

2.安装cmake、git等编译工具

3.获取toolchain

git clone https://github.com/raspberrypi/tools.git

4.将toolchain加入到path环境变量中(本人安装的64位debian,使用root登录系统,tools被克隆到/root中,请根据你自己的路径设置)

echo '$PATH:/root/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin' >> ~/.profile
source ~/.profile
#输出gcc版本信息验证
arm-linux-gnueabihf-gcc --version

5.通过nfs将目标系统的根目录挂载到编译主机上

e370f20cd7398a38118cf7f0d367091d.png

6.将greenbone openvas的几个关键组件克隆到编译主机上

#扫描器
git clone https://github.com/greenbone/openvas-scanner
#管理器
git clone https://github.com/greenbone/gvmd
#WEB控制端
git clone https://github.com/greenbone/gsa
#库
git clone https://github.com/greenbone/gvm-libs

---------------------------以上进行交叉编译的准备基本完成------------------------------

编译需要优先编译gvm-libs,其他组件顺序随意。

1.准备一份cmake toolchain file

SET(CMAKE_SYSTEM_NAME Linux)
#SET(CMAKE_SYSTEM_VERSION 1)
SET(CMAKE_SYSTEM_PROCESSOR arm)
SET(ARCH armhf)
SET(rootfs "/root/rootfs")
SET(CMAKE_SYSROOT "${rootfs}")

SET(tools "/root/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64")
SET(CMAKE_C_COMPILER "${tools}/bin/arm-linux-gnueabihf-gcc")
SET(CMAKE_CXX_COMPILER "${tools}/bin/arm-linux-gnueabihf-g++")
SET(CMAKE_Fortran_COMPILER "${tools}/bin/arm-linux-gnueabihf-gfortran")

set(PKG_CONFIG_EXECUTABLE "arm-linux-gnueabihf-pkg-config" CACHE PATH "pkg-config executable")
SET(ENV{PKG_CONFIG_SYSROOT_DIR} ${rootfs})
SET(ENV{PKG_CONFIG_PATH} "${rootfs}/usr/local/lib/pkgconfig/:${rootfs}/usr/lib/arm-linux-gnueabihf/pkgconfig:${rootfs}/usr/share/pkgconfig:${rootfs}/usr/lib/pkgconfig:$PKG_CONFIG_PATH")

SET(CMAKE_FIND_ROOT_PATH "${tools}/arm-linux-gnueabihf/" "${roots}/arm-linux-gnueabihf/libc/" "${rootfs}")
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

2.gvm-libs编译演示

mkdir gvm-libs-build
cd gvm-libs-build
#下面的pi.cmake即步骤1需要创建的编译环境配置文件
cmake -D CMAKE_TOOLCHAIN_FILE=/root/pi.cmake ../gvm-libs
#执行cmake后将输出一堆内容如下
-- Configuring the Greenbone Vulnerability Management Libraries...
#(中略)
-- Found PkgConfig: arm-linux-gnueabihf-pkg-config (found version "0.25") 
-- Checking for module 'glib-2.0>=2.42'
--   Found glib-2.0, version 2.50.3
-- Checking for module 'zlib>=1.2.8'
--   Found zlib, version 1.2.8
-- Checking for module 'gio-2.0>=2.42'
#(下略)
#请确保所有需要的dev包都在pi上安装(请务必注意是在pi上安装)如下所示,
#cmake在我们的pi根文件系统找到了需要链接的库,并成功生成了编译配置文件
-- Looking for libldap...
--   Found /root/rootfs/usr/lib/arm-linux-gnueabihf/libldap.so - ldap support enabled
-- Found Doxygen: /usr/bin/doxygen (found version "1.8.13") found components:  doxygen missing components:  dot
-- Configuring done
-- Generating done
-- Build files have been written to: /root/gvm-lib-build
#最后执行make编译,可以通过-j参数提高编译速度,参数匹配cpu核心数最佳
make -j12

然后必然会出现类似这样的错误,这类报错是因为我们生成的二进制执行文件为arm平台的,无法在x86_64平台上通过运行测试,此时我们可以将项目目录通过nfs挂到pi上进行最后的编译和安装作业。

4ef4f4a10b95a4177acfab8ddfbb5235.png
#在pi上同样安装cmake和gcc等编译工具
#奇技淫巧的地方在于我们需要在pi上创建出与编译主机一致的路径,可参考下面命令进行后续的编译作业
mkdir build_host
mount debian:/root /root/build_host
mkdir /root/rootfs
mount -o bind / /root/rootfs/
ln -s /root/build_host/gvm-libs /root/gvm-libs
ln -s /root/build_host/gvm-libs-build/ /root/gvm-libs-build

在生成相关路径后继续执行make,可以看到so库文件被正确链接,我们接着执行make install即可。

769100cb746f9e0c6f2bac3689e36025.png

3.其他几个组件的编译与上面步骤基本相同,不再废话,下面记录下如何对openvas进行初始化配置。


#安装redis服务,并创建openvassd配置文件配置正确的redis socket路径
echo 'db_address=/var/run/redis/redis.sock' >> /usr/local/etc/openvas/openvassd.conf

#生成证书
gvm-manage-certs -a
#执行这几个同步脚本,同步慢的话可以到官网找到离线包。
greenbone-certdata-sync  greenbone-nvt-sync       greenbone-scapdata-sync

#创建一个WEB控制端的用户
gvmd --user=用户名 --password=密码

#写一个手动执行的启动脚本
root@raspberrypi:~# cat start_openvas.sh 
#!/bin/bash

echo "starting openvas scanner"
openvassd
echo "starting openvas manager"
gvmd
echo "starting web interface"
gsad --munix-socket=/usr/local/var/run/gvmd.sock

那么祝大家happy hacking

79bed699f83a310f942b6ca8bd764885.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值