基于FreeBSD平台部署Snort IDS系统

鉴于FreeBSD系统展现出的卓越稳定性,其常被部署于邮件网关服务器、防火墙路由器及存储服务器等环境,这些应用场景均对操作系统提出了高负载与高强度计算能力的严格要求。此外,FreeBSD凭借其在数据包捕获方面的出色表现,已成为构建如FreeNAS、Panabit、PFsense等产品的基础,并获得了广泛应用。

当前,我们致力于将FreeBSD引入新的应用领域——Snort IDS(入侵检测系统)。鉴于企业IDS对服务器稳定性、高效处理性能及安全性的高标准要求,FreeBSD的特性与此高度契合。在既定的硬件资源配置下,FreeBSD能够支持更多虚拟机的运行,从而优化资源利用。

以下,我们将聚焦于虚拟机环境下FreeBSD的安装流程。需注意的是,对于缺乏Linux使用经验的用户而言,本文内容可能构成一定挑战,但我们会力求以简明扼要的方式阐述,以便读者能够顺利理解并掌握相关知识。

1.系统新特性

FreeBSD 13.1版本现支持多种系统架构,包括但不限于md64、i386、powerpc、powerpc64、powerpc64le、powerpcspe、armv6、armv7、aarch64及riscv64。同时,OpenSSL已升级至v1.1.1o版本,且SSH功能已启用FIDO/U2F硬件身份验证,显著增强了系统的安全性。

在FreeBSD 13版本中,系统默认采用ZFS文件系统,这是一个先进的128位文件系统。ZFS创新地将传统的卷管理器和文件系统功能融为一体,支持将额外磁盘添加至存储池中,并实现对现有文件系统的自动扩展。其设计理论上可支持存储高达256千万亿ZB的数据量,同时确保数据在磁盘中的连续性和完整性。尽管与Ext4文件系统相比,ZFS在数据容量上占据显著优势,但在读写性能方面可能略逊于Ext4。然而,ZFS特别适用于长期数据存储及需要无限扩展数据存储大小的应用场景。此优势在Linux系统中通过安装ZFS难以达到相同水平,彰显了FreeBSD在这一领域的独特优势。

官网下载地址:https://download.freebsd.org/ftp/releases/ISO-IMAGES/

2. 必备知识点

对于初次接触FreeBSD的用户而言,无需深入掌握系统架构或复杂原理。在本章的安装软件操作过程中,用户需熟悉并掌握FreeBSD提供的两种关键包管理器:Ports与pkg。这两种工具将协助用户高效管理软件的安装与配置。

  1. Ports 它是一个软件集合。是FreeBSD提供的软件包管理方式,专门用于管理源码包。
  2. Pkg包管理器,它是FreeBSD中另一种包管理工具,专门用于管理二进制软件包。

有了以上基本概念在操作中就不会感到陌生。

    3)网络接口:FreeBSD系统将Intel千兆网卡设备定义为em,而系统中第一块网卡用0表示,合起来第一块intel千兆网卡的网络设备名称为em0。

    4)Port tree:这是FreeBSD软件包的集合,Ports Tree基本上是每天都在更新的,而且各种软件每天都有新的版本会推出,所以要及时更新Ports Tree。

在CentOS或Ubuntu系统中安装Snort时,我们应采取一系列严谨且有序的步骤。

首先,需定位并获取Snort源码的tar包下载链接。随后,将下载的tar包进行解压操作。紧接着,依据INSTALL文档中的指导进行安装,若软件较为陌生,更应详尽阅读其安装指南以确保无误。

鉴于Snort以源码形式发布,故需执行编译流程,这通常起始于运行configure脚本以配置编译环境,随后进行源码的编译过程。一旦编译成功,便需进行软件的测试,并最终执行安装操作。值得注意的是,若软件存在依赖关系,需提前识别并下载所有必需的依赖软件包,以确保安装过程的顺利进行。

在当前的FreeBSD系统中,我们采用了先进的ports Collection机制,该机制依托Makefile脚本,实现了软件编译、安装及卸载流程的自动化。具体而言,ports集合中的Port Tree作为核心组件,内含详尽信息,支持自动化地执行软件的下载、解压、打补丁、编译及安装操作。

尤为值得一提的是,在ports目录下执行make install命令时,若当前port存在对其他应用程序或库的依赖需求,系统将自动触发这些依赖项的安装流程,极大程度地减少了用户的干预,确保了软件安装过程的流畅与高效。这一特性在FreeBSD环境下安装SnortIDS时尤为显著,彰显了其智能化与便捷性的优势。

3. 系统安装 

若您已具备CentOS/Debian/Ubuntu Linux的安装经验,且对FreeBSD有所耳闻,但尚未亲自部署BSD系统,以下步骤将引导您顺利完成FreeBSD的安装流程。首先,请访问官方网站下载镜像文件FreeBSD-13.1-RELEASE-amd64-disc1.iso。为进行此安装,我们推荐使用Vmware workstation 17作为虚拟机环境。

第1步:设置虚拟机

  1. 内存:512MB+
  2. CPU:1
  3. 硬盘:20GB
  4. 网卡:1块,NAT或者桥接模式

第2步:安装操作系统

第3步 设置静态IP

静态IP的设置可以在操作系统安装阶段进行配置,或者待系统安装完毕后,通过修改相应的配置文件来达成目的。实验主机IP为192.168.183.202

1)编辑rc.conf文件(以下IP地址和掩码,要根据你实验网络配置情况填写)

# vi /etc/rc.conf

hostname="test"

ifconfig_em0="inet 192.168.183.202 netmask 255.255.255.0"

defaultrouter="192.168.183.2"

保存退出。

配置参考如图 所示。

2.修改DNS

# vi /etc/resolv.conf

nameserver 192.168.183.2

SHELL脚本实现方法:

echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf > /dev/null

3.重启服务

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

  1. 测试

#ping -c4 www.baidu.com

测试通过后,到此基础系统安装完毕。

4 系统配置 

4.1 设置SSH

本实验的远程连接工具选用:远程连接我们选择MobaXterm或Xshell。

配置系统的第一步就是要设置root用户能远程登录系统,首先编辑/etc/ssh/sshd_conf文件

#vi /etc/ssh/sshd_conf

修改第36行

#PermitRootLogin no改为 PermitRootLogin yes

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

重启动SSHD服务

#/etc/rc.d/sshd restart

4.2更换国内源

在当前的环境下,FreeBSD在国内尚未设立镜像源,为优化软件安装流程并提升效率,首要步骤是切换至国内的软件源。在此操作之前,强烈建议用户先行备份原有的源文件,以确保数据安全与后续操作的顺利进行。

#cp /etc/pkg/FreeBSD.conf /etc/pkg/FreeBSD.conf.bak

接着,我们打开FreeBSD.conf,原始内容如下:

FreeBSD: {

  url: "pkg+http://pkg.FreeBSD.org/${ABI}/quarterly",

  mirror_type: "srv",

  signature_type: "fingerprints",

  fingerprints: "/usr/share/keys/pkg",

  enabled: yes

}

以上内容显示的是国外源,从国外源升级系统,速度比较慢。下面我们把以上内容都删除,替换为国内中科大的源。还是编辑/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即可。接下来更新源。

root@test:~ # pkg update        #更新源

4.3 安装Snort及相关组件

下面我们通过pkg就能完成Snort及相关组件的安装。

1.安装Snort

我们使用如下命令:

#pkg install snort

显示部分信息如下:

从安装信息可发现已安装组件Snort、Barnyard2、pulledpork。它们均安装在/usr/local/目录。在Snort 2.9.20软件安装完成时,另两款工具Barnyard2 v2.1.13(不支持数据库插件)、pulledpork v0.74也安装完。

下面我们要分别了解其主程序和配置文件的位置。

                                                                      表 1

程序名

主程序

配置文件

Snort

/usr/local/bin/snort

/usr/local/etc/snort/snort.conf

Barnyard2

/usr/local/bin/barnyard2

/usr/local/etc/barnyard2.conf

Pulledpork

/usr/local/bin/pulledpork.pl

/usr/local/etc/pulledpork/pulledpork.conf.sample

2. 配置pulledpork

PulledPork安装之后才能执行下面命令。

#cd /usr/local/etc/pulledpork/

#cp pulledpork.conf.sample pulledpork.conf

#vi pulledpork.conf

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

我们需要将Oinkcode码输入到<oinkcode>里(c65fc0ec980c4a16f51d0d33c7db49bd4924f4b9)。

在完成修改后,请确保保存并退出。此时,不建议立即执行pulledpork脚本,而应先行创建iplists目录。

创建iplist目录

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

准备工作完成之后,下面我们开始运行pulledpork。

3.运行Pulledpork

#/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

下载两个压缩包放置在/tmp目录

community-rules.tar.gz、snortrules-snapshot-29200.tar.gz

将这两个压缩包都复制到/root目录

规则更新日志查看/var/log/sid_changes.log

4 配置Snort

通过pulledpork升级完规则后,下面我们通过脚本设置Snort。

执行Snort配置脚本

当pulledpork下载完成之后就可以执行snort的配置脚本。

第一步:

#cd /root

root@snortvm:~ # sh snortconfig.sh

该脚本执行完成,没有任何提示,我们接着设置Snort开机启动项。

第二步:

设置Snort开机启动

#echo 'snort_enable="YES"'>>/etc/rc.conf

5 测试Snort

测试Snort启动

#snort -T -c /usr/local/etc/snort/snort.conf -i em0

#snort  -c /usr/local/etc/snort/snort.conf -i em0 -A console         //注意网络接口名称

在攻击机上ping这台Snort主机。

通过脚本启动Snort

在执行下面命令之前要再执行一个命令将/etc/rc.conf设置为snort_enable=YES

# /usr/local/etc/rc.d/snort start

6 安装Barnyard2

虽然在安装Snort时,附带安装了Barnyard2,通过依赖方式安装的这个软件无法满足实验要求,为此我们通过源码编译方式将数据库模块装入,前提是安装MySQL-Server,输入以下命令:

#pkg install  -y mysql56-server

下面开始安装barnyard2-1.9

#tar -xzf barnyard2-1.9.tar.gz

#cd barnyard2-1.9

#./configure --with-mysql

#make && make install

#ldconfig

检验barnyard2已安装完成

#barnyard2  -V

执行该命令后,屏幕会输出版本号信息,说明软件安装完成。

Tips:在Barnyard的诸多版本在barnyard2-1.9这个版本实用性最强能安装在所有的Linux/BSD系统中,启动速度快,就是处理消息速度有些慢,但实验足够了。Barnyard2-1.14编译安装比较复杂启动速度慢。处理消息速度快。

7 配置MySQL数据库5.6

1)启动数据库

下面这条命令是设置开机自动启动数据库。

# echo 'mysql_enable="YES"' >> /etc/rc.conf

这条命令执行完,不会有任何提示。如果要立刻启动数据库,输入下面命令:

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

# netstat -na |grep 3306

由于MySQL5.6在刚安装完成并启动之后,管理员密码为空,我们必须尽快修改密码。

#echo "FLUSH PRIVILEGES" | /usr/bin/mysql --user=root --password=123456

2)设置数据库管理员密码

登录数据库

#mysql -u root -p

下面的命令将管理员设置密码为‘123456’

mysql> set password=password("123456");

3 )创建Snort数据库

设置管理员密码之后,下面开始创建 snort 数据库并设置用户访问权限:

mysql>CREATE DATABASE `snort`;

mysql>USE snort;

mysql>GRANT ALL PRIVILEGES ON snort.* TO 'snort'@'localhost' IDENTIFIED BY '123456';

mysql> SOURCE /root/barnyard2-1.9/schemas/create_mysql;

通过源码编译安装barnyard2-2.13软件则输入下面的命令。

mysql>SOURCE /usr/local/share/examples/barnyard2/create_mysql

mysql> flush privileges;

mysql>exit

退出MySQL控制台。

4) 配置Barnyard2.1.9

执行配置脚本

#cd /root

#sh barnyard-config.sh

测试barnyard2

#barnyard2 -c /usr/local/etc/barnyard2.conf -d /var/log/snort/ -f snort.log -w /var/log/snort/barnyard2.waldo -T

见到这行提示说明安装配置成功。下面开始Snort+Barnyard+MySQL联合调试。

5 )联合调试

首先重新打开一个远程终端并启动Snort

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

接着,我们不用配置barnyard2,也能启动

#barnyard2 -c /usr/local/etc/barnyard2.conf -d /var/log/snort/ -f snort.log -w /var/log/snort/barnyard2.waldo

此时可以在控制台收到报警。此时还没有把报警存储到数据库。

重新打开一个终端,输入以下命令来查看Snort数据库报警记录

#mysql -u snort -p -D snort -e "select count(*) from event"

看到计数器在不断增长说明实验成功,如果为0说明配置失败重新检查barnyard2和数据库的配置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值