FreeBSD环境中源码部署Snort+Barnyard2+MySQL+BASE

在2019年发布的文章《手动打造Snort+barnyard2+BASE可视化报警平台》,目前已有20K+的浏览量,帮助了很多想深入了解Snort,而又无法独立安装系统的同学。前段时间一些学员留言,询问有关Pfsense(基于FreeBSD的开源防火墙)的问题,经过一段时间的研究,萌生了在FreeBSD系统中手动下载源码并编译Snort
IDS的想法,实验成功后现分享给大家。有关FreeBSD和Linux的性能对比就不再赘述。

1.安装系统

安装特点:FreeBSD下安装snort及相关组件,对软件编译知识要求的比较少,很多依赖关系都可以自动完成,对硬件资源要求不高,但对网络访问质量要求很高,有些代码需访问外网才能完成安装。推荐在VMware
workstation中安装。

通过下面的URL获取安装镜像

​​https://download.freebsd.org/ftp/releases/ISO-IMAGES/11.2/​​
​ ​http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/old-releases/ISO-
IMAGES/11.2/​​

2.设置静态IP

vi /etc/rc.conf

sendmail_enable=“NONE”
hostname=“snortvm”
ifconfig_le0=“192.168.183.136 netmask 255.255.255.0”
defaultrouter=“192.168.183.2”
sshd_enable=“YES”

Set dumpdev to “AUTO” to enable crash dumps, “NO” to disable

dumpdev=“AUTO”
修改DNS

vi /etc/resolv.conf

nameserver 192.168.183.2
以上网络地址需根据实际需要设置(IP:192.168.183.136)。为启动Snort需要,我们查看当前网络接口,本实验中为le0,而有的系统为em0,网卡接口名称需特别注意。

重启服务

/etc/rc.d/netif restart && /etc/rc.d/routing restart

测试 ping -c4 www.baidu.com

3.更换国内源

为了提高下载速度可以更换为国内源,下面以中科大的源为例。

#cp /etc/pkg/FreeBSD.conf /etc/pkg/FreeBSD.conf.bak
#vi /etc/pkg/FreeBSD.conf
加入如下内容(中科大的源):

FreeBSD: {
url: “pkg+http://mirrors.ustc.edu.cn/freebsd-pkg/${ABI}/latest”,
mirror_type: “srv”, signature_type: “fingerprints”,
fingerprints: “/usr/share/keys/pkg”,
enabled: yes
}

保存退出。注意地址后面latest 表示滚动更新的版本库,如果想要稳定些的版本换成quarterly即可。

#pkg update

4.设置SSH远程登录

系统安装完成重新登录系统后,首先设置SSH服务,允许root 远程登录。方法如下:

编辑 /etc/ssh/sshd_config 文件

将其中的第36行

#PermitRootLogin no 改为 PermitRootLogin yes
即将前面的#去掉,并将no改为yes,保存退出。

重启动SSHD服务

#/etc/rc.d/sshd restart

5.源码安装Snort

为了源码编译,我们先要完成安装前准备工作,首先执行下面命令:

#portsnap fetch extract update
该步骤的目的是下载、更新Ports 套件快照。

#cd /usr/ports/ports-mgmt/portupgrade
#make install
编译环节,耗时比较长,需要多次确认安装组件(保持默认选择OK选项即可)。所有下载的源码包存储在/usr/ports/distfiles目录。

#rehash
1.当上面的准备工作做好之后,安装编译snort根本就用不着我们操心,执行下面命令。

#portinstall snort

该命令系统会考虑依赖包的问题自动安装Snort、barnyard2、pulldpork共3个软件。

在随后弹出界面中,选择MYSQL,表示barnyard2支持数据库输出插件。随后按提示点击OK按钮,直到安装结束。

在Snort 软件安装完成时,另两款工具Barnyard2 v2.1.13(支持数据库插件)、pulledpork
v0.74也随之安装完,但都需要单独配置才能运行。

Tips:如果需要在多台机器中部署,为了节约下载时间,也可以通过其他机器将软件下载完成后,导入全部tarball包下载到/usr/ports/distfiles目录。

6.Snort配置

首先我们要编辑/usr/local/etc/snort/snort.conf配置文件。将snort.conf的第一行加入网络号

原配:ipvar HOME_NET [YOU_NEED_TO_SET_HOME_NET_IN_snort.conf]

修改:ipvar HOME_NET [192.168.183.0/24]

接着修改黑名单和白名单路径,下面是原始配置

改为现在配置(238行)

修改规则变量的路径,修改后的配置为:

注销暂时不用的规则。我们先将"include $RULE_PATH/local.rules"之后的所有引用规则暂时注销。修改完成后保存退出。

接着在目录/usr/local/etc/snort/rules下建立规则文件local.rules,并写入ping规则(写法参考上一篇博客)。

#mkdir /var/log/snort
Tip:源码包安装的情况需要手动建立,如果用pkg install snort则会产生/var/log/snort

#cd /usr/local/etc/snort/rules
#touch white_list.rules black_list.rules#mkdir /var/log/barnyard2
#cd /usr/local/etc/snort/
#touch sid-msg.map
#touch /var/log/snort/barnyard2.waldo
准备工作完成之后下面尝试启动Snort

#snort -c /usr/local/etc/snort/snort.conf -i le0

7.配置pulledpork

PulledPork (这个单词原意是猪肉汉堡)是一个 perl 脚本,它将从不同位置下载、组合和安装/更新 Snort 规则集以供 Snort
使用。Pulled Pork 将所有规则合并到一个文件中:/etc/snort/rules/snort.rules.

我们需要确保将行:添加include $RULE PATH/snort.rules到snort.conf文件中,否则在 Snort
启动时,PulledPork 规则不会被读入内存。

Pulledpork主程序虽然已经安装,但没有配置,我们还是无法使用,下面我们进入pulledpork配置目录,将pulledpork.conf.sample配置模板文件复制为pulledpork.conf

#cd /usr/local/etc/pulledpork
#cp pulledpork.conf.sample pulledpork.conf

vi pulledpork.conf

查看第19行配置,原配置如下:

首先我们要把pulledpork的配置文件复制到/etc/snort/目录。我们登录snort.org官网注册用户并获取oinkcode代码。修改完成后,保存退出。此时我们不要急于运行pulledpork脚本,还需要新建iplists目录。

#mkdir -p /usr/local/etc/snort/rules/iplists/

8.运行pulledpork

​确保pulledpork.conf配置正确的情况下。执行下列命令。

#/usr/local/bin/pulledpork.pl -c /usr/local/etc/pulledpork/pulledpork.conf
该脚本执行完成之后,将发生以下变化:

手动新建下列2个文件:

/usr/local/etc/snort/sid-msg.map
/usr/local/etc/snort/rules/snort.rules
然后下载2个压缩包放置在/tmp目录

community-rules.tar.gz
snortrules-snapshot-29171.tar.gz
注释:如果pulledpork这个脚本无法运行,我们也可以手动下载文件snortrules-snapshot-29180.tar.gz

9.自动升级Snort规则

我们将 PulledPork 脚本添加到 root 的 crontab,以实现自动升级Snort规则,操作如下。

crontab -e
在 crontab 中添加以下行:

01 04 * * * /usr/local/bin/pulledpork.pl -c /etc/snort/pulledpork.conf -l

改进方法,写一个升级规则的脚本,然后在crontab启动这个脚本。

10.安装数据库

在Snort IDS的数据库系统配置过程往往和barnyard2一起进行,因为Barnyard2运行需要连接数据库,我们接着先来安装mysql57。

pkg install -y mysql57-server
echo ‘mysql_enable=“YES”’ >> /etc/rc.conf
/usr/local/etc/rc.d/mysql-server start
启动数据库

/usr/local/etc/rc.d/mysql-server start

这里数据库管理员的初始化密码不为空,我们要获取数据库初始密码,只有启动数据库之后,系统才会产生.mysql_secret文件。

#cat /root/.mysql_secret

登录数据库并修改管理员密码

系统提示需重置管理员密码。下面的命令将管理员设置密码为‘123456’

11.设置MySQL数据库

为root用户创建了新密码之后,下面开始创建 snort 数据库并设置用户访问权限:

mysql -u root -p

mysql> CREATE DATABASE snort;
mysql>use snort;
mysql>GRANT ALL PRIVILEGES ON snort.* TO ‘snort’@‘localhost’ IDENTIFIED BY
‘123456’;
有一个用 snort 预先打包的脚本来为您设置表:

mysql> SOURCE /usr/local/share/examples/barnyard2/create_mysql;
对于pkg install snort方式安装的可以用这条命令。

12.配置barnyard2脚本

以下是barnyard2.conf(/usr/local/etc/barnyard2.conf)参考配置:

config reference_file: /usr/local/etc/snort/reference.config
config classification_file: /usr/local/etc/snort/classification.config
config gen_file: /usr/local/etc/snort/gen-msg.map
config sid_file: /usr/local/etc/snort/sid-msg.map
config hostname: snortvm
config interface: le0 //可选的配置项
config logdir: /var/log/snort //可选的配置项
config waldo_file:/var/log/snort/barnyard2.waldo
input unified2
output alert_fast: stdout //将报警显示在屏幕
output alert_fast
output database: log, mysql, user=snort password=123456 dbname=snort
host=localhost
启动barnyard2

#/usr/local/bin/barnyard2 -c /usr/local/etc/barnyard2.conf -d /var/log/snort
-f snort.log -w /var/log/snort/barnyard2.waldo
通过ping测试snort规则报警,以便观察数据库表的变化。

mysql -u snort -p -D snort -e “select count(*) from event”
1.Snort+Barnyard2+MySQL联通实验完成之后下面解决WebUI的问题,本实验安装BASE 1.4.5。

13.安装BASE

(1)安装Apache

#pkg install apache24
安装程序会自动创建用户www和组www

#echo ’ apache24_enable=“yes”’ >> /etc/rc.conf
(2)安装PHP模块(php 74)

#pkg install php74 (FreeBSD 11、12下默认安装php7.4)

#pkg install www/mod_php74 php74-mysqli
#cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

编辑php.ini文件

#vi /usr/local/etc/php.ini

安装BASE (1.4.5)
在Linux其他版本中BASE仅支持PHP5.6 ,对于PHP7不支持,这里FreeBSD社区对BASE进行了优化。

#pkg install base-1.4.5_1

New packages to be INSTALLED:
adodb5-php74: 5.21.2
base: 1.4.5_1

fontconfig: 2.13.94_1,1

freetype2: 2.11.0
giflib: 5.2.1
jbigkit: 2.1_1
jpeg-turbo: 2.1.1
libgd: 2.3.1,1
php74-ctype: 7.4.24
php74-gd: 7.4.24
php74-gettext: 7.4.24
php74-pear: 1.10.12
php74-pear-Image_Canvas: 0.3.2_1
php74-pear-Image_Color: 1.0.4
php74-pear-Image_Graph: 0.8.0
php74-pear-Log: 1.13.3
php74-pear-Mail: 1.4.1,1
php74-pear-Mail_Mime: 1.10.11,2
php74-session: 7.4.24
php74-xml: 7.4.24
php74-zlib: 7.4.24
png: 1.6.37_1
tiff: 4.3.0
webp: 1.2.1

备注:如何找到这个软件名: pkg search base-1.4.5,我想在系统找到安装的软件:pkg info | grep base

查看这个软件包安装路径: pkg info -l base 小写字母l

root@snort:~ # pkg info -l base-1.4.5_1

base-1.4.5_1:

/usr/local/share/doc/base/CHANGELOG
/usr/local/share/doc/base/CREDITS
/usr/local/share/doc/base/GPL
/usr/local/share/doc/base/README
/usr/local/www/base/admin/base_roleadmin.php
/usr/local/www/base/admin/base_useradmin.php
/usr/local/www/base/admin/index.php
/usr/local/www/base/base_ag_common.php
……

安装BASE完成之后还需要下面3步操作。

移动BASE目录

mv /usr/local/www/base/ /usr/local/www/apache24/data/

设置权限

chown -R www:www /usr/local/www/apache24/data/base/

修改配置

#vi /usr/local/etc/apache24/httpd.conf
在423后面加上两行。

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

保存退出。下面开始重启Web服务器

#service apache24 restart
1.设置BASE
打开浏览器输入网址​ ​http://192.168.183.136/base/​​

ADODB路径/usr/local/share/adodb/

14.自启动Apache/Snort/Barnyard2

在FreeBSD中实现开机启动启动Apache、Snort、Barnyard2及mysql,实现方法比Linux下要简单,只需在/etc/rc.conf添加一下几行:

apache24_enable=“yes”
snort_enable=“yes”
barnyard2_enable=“yes”
mysql_enable=“yes”
系统调用/usr/local/etc/rc.d目录中存放的启动脚本,更多细节我们可以到这里进行修改。

检查进程

#ps -ax | grep barnyard2 |grep -v grep

15.bilibili操作演示

https://www.bilibili.com/video/BV1L3411q7pn/?spm_id_from=333.337.search-
card.all.click&vd_source=b1c8f017fe628cf4c40c285933f51fb5​​

16.总结

到此FreeBSD设置BASE设置就圆满完成。相比较LInux系统安装,我们在这里不用考虑依赖包的问题,不用建立繁琐的软连接,安装过程基本实现半自动化,需要注意的是FreeBSD
11~13 都可以安装 Snort+Barnyard+Mysql。但只有FreeBSD
11可以安装BASE,本文场景适用于复杂繁重的网络环境让FreeBSD系统的IDS做数据分析存储,然后在LInux环境中安装WebUI实现报警可视化。

ili.com/video/BV1L3411q7pn/?spm_id_from=333.337.search-
card.all.click&vd_source=b1c8f017fe628cf4c40c285933f51fb5​​

16.总结

到此FreeBSD设置BASE设置就圆满完成。相比较LInux系统安装,我们在这里不用考虑依赖包的问题,不用建立繁琐的软连接,安装过程基本实现半自动化,需要注意的是FreeBSD
11~13 都可以安装 Snort+Barnyard+Mysql。但只有FreeBSD
11可以安装BASE,本文场景适用于复杂繁重的网络环境让FreeBSD系统的IDS做数据分析存储,然后在LInux环境中安装WebUI实现报警可视化。

如果你对网络安全入门感兴趣,那么你点击这里👉CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

如果你对网络安全感兴趣,学习资源免费分享,保证100%免费!!!(嘿客入门教程)

👉网安(嘿客)全套学习视频👈

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

img

img

👉网安(嘿客红蓝对抗)所有方向的学习路线****👈

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

img

学习资料工具包

压箱底的好资料,全面地介绍网络安全的基础理论,包括逆向、八层网络防御、汇编语言、白帽子web安全、密码学、网络安全协议等,将基础理论和主流工具的应用实践紧密结合,有利于读者理解各种主流工具背后的实现机制。

在这里插入图片描述

面试题资料

独家渠道收集京东、360、天融信等公司测试题!进大厂指日可待!
在这里插入图片描述

👉嘿客必备开发工具👈

工欲善其事必先利其器。学习客常用的开发软件都在这里了,给大家节省了很多时间。

这份完整版的网络安全(客)全套学习资料已经上传至CSDN官方,朋友们如果需要点击下方链接也可扫描下方微信二v码获取网络工程师全套资料【保证100%免费】

在这里插入图片描述

如果你有需要可以点击👉CSDN大礼包:《嘿客&网络安全入门&进阶学习资源包》免费分享

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值