在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/
2.设置静态IP
2.修改DNS
以上网络地址需根据实际需要设置(IP:192.168.183.136)。为启动Snort需要,我们查看当前网络接口。有的系统为em0,有的系统为le0.
3.重启服务
4.测试
3.设置SSH远程登录
系统安装完成重新登录系统后,首先设置SSH服务,允许root 远程登录。方法如下:
编辑 /etc/ssh/sshd_config 文件
将其中的第36行
即将前面的#去掉,并将no改为yes,保存退出。
重启动SSHD服务
4.源码安装Snort
为了源码编译,我们先要完成安装前准备工作,首先执行下面命令:
该步骤的目的是下载、更新Ports 套件快照。
编译环节,耗时比较长,需要多次确认安装组件(保持默认选择OK选项即可)。所有下载的源码包存储在/usr/ports/distfiles目录。
当上面的准备工作做好之后,安装编译snort根本就用不着我们操心,执行下面命令。
该命令系统会考虑依赖包的问题自动安装Snort、barnyard2、pulldpork共3个软件。
在随后弹出界面中,选择MYSQL,表示支持数据库输出插件。
在Snort 软件安装完成时,另两款工具Barnyard2 v2.1.13(支持数据库插件)、pulledpork v0.74也随之附带安装完,但snort,pulledpork需要单独配置才能运行。
Tips:如果需要在多台机器中部署,为了节约下载时间,也可以通过其他机器将软件下载完成后,导入全部tarball包下载到/usr/ports/distfiles目录。
5.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规则(写法参考上一篇博客)。
Tip:源码包安装的情况需要手动建立,如果用pkg install snort则会产生/var/log/snort
准备工作完成之后下面尝试启动Snort
6.配置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
查看第19行配置,原配置如下:
首先我们要把pulledpork的配置文件复制到/etc/snort/目录。我们登录snort.org官网注册用户并获取oinkcode代码。修改完成后,保存退出。此时我们不要急于运行pulledpork脚本,还需要新建iplists目录。
7.运行pulledpork
确保pulledpork.conf配置正确的情况下。执行下列命令。
该脚本执行完成之后,将发生以下变化:
手动新建下列2个文件:
然后下载2个压缩包放置在/tmp目录
注释:如果pulledpork这个脚本无法运行,我们也可以手动下载文件snortrules-snapshot-29180.tar.gz
8.自动升级Snort规则
我们将 PulledPork 脚本添加到 root 的 crontab,已实现自动升级Snort规则,操作如下。
在 crontab 中添加以下行:
改进方法,写一个升级规则的脚本,然后在crontab启动这个脚本。
9.安装数据库
Barnyard2运行需要连接数据库,我们接着来安装。
启动数据库
这里数据库管理员的初始化密码不为空,我们要获取数据库初始密码,只有启动数据库之后,系统才会产生.mysql_secret文件。
#cat /root/.mysql_secret
登录数据库并修改管理员密码
系统提示需重置管理员密码。下面的命令将管理员设置密码为‘123456’
10.设置MySQL数据库
为root用户创建了新密码之后,下面开始创建 snort 数据库并设置用户访问权限:
有一个用 snort 预先打包的脚本来为您设置表:
对于pkg install snort方式安装的可以用这条命令。
11.配置barnyard2脚本
以下是barnyard2.conf(/usr/local/etc/barnyard2.conf)参考配置:
启动barnyard2
通过ping测试snort规则报警,以便观察数据库表的变化。
,Snort+Barnyard2+MySQL联通实验完成之后下面解决WebUI的问题,本实验安装BASE 1.4.5。
12.安装BASE
(1)安装Apache
安装程序会自动创建用户www和组www
(2)安装PHP模块(php 74)
#pkg install php74 (FreeBSD 11、12下默认安装php7.4)
编辑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
fontconfig: 2.13.94_1,1
备注:如何找到这个软件名: pkg search base-1.4.5,我想在系统找到安装的软件:pkg info | grep base
查看这个软件包安装路径: pkg info -l base 小写字母l
base-1.4.5_1:
安装BASE完成之后还需要下面3步操作。
移动BASE目录
设置权限
修改配置
在423后面加上两行。
保存退出。下面开始重启Web服务器
设置BASE
打开浏览器输入网址http://192.168.183.136/base/
ADODB路径/usr/local/share/adodb/
总结
到此,FreeBSD设置BASE设置就圆满完成。相比较LInux系统安装,我们在这里不用考虑依赖包的问题,不用建立繁琐的软连接,安装过程基本实现半自动化,需要注意的是FreeBSD11 ~ 13 都可以安装 snort+barnyard+mysql。但只有freebsd11可以安装BASE,本文场景适用于复杂繁重的网络环境让FreeBSD系统的IDS做数据分析存储,然后在LInux环境中安装WebUI实现报警可视化。
2022年51CTO学堂讲师评选正在进行中,希望各位投上宝贵一票。
https://edu.51cto.com/lecturer/350944.html
(以用户ID登录并进行投票)