【网络安全实验】snort实现高级IDS,2024年最新2024-2024字节跳动网络安全面试真题解析

3对Snort进行配置

3.1创建一些必要的文件夹

#Snort的安装目录

sudo mkdir -p /etc/snort/rules/iplists

sudo mkdir -p /etc/snort/preproc_rules

sudo mkdir /usr/local/lib/snort_dynamicrules

sudo mkdir /etc/snort/so_rules

#存储过滤规则和服务器黑白名单

sudo touch /etc/snort/rules/iplists/default.blacklist

sudo touch /etc/snort/rules/iplists/default.whitelist

sudo touch /etc/snort/rules/so_rules

#创建日志目录

sudo mkdir /var/log/snort

sudo mkdir /var/log/snort/archived_logs

#调整权限

sudo chmod -R 5775 /etc/snort

sudo chmod -R 5775 /var/log/snort

sudo chmod -R 5775 /var/log/snort/archived_logs

sudo chmod -R 5775 /etc/snort/rules/so_rules

sudo chmod -R 5775 /usr/local/lib/snort_dynamicrules

3.2复制文件到 /etc/snort

cd /home/lingqi/daq-2.0.7/LuaJIT-2.0.5/

cp ./snort-2.9.20/etc/*.conf* /etc/snort

cp ./snort-2.9.20/etc/*.map /etc/snort

cp ./snort-2.9.20/etc/*.dtd /etc/snort

cp ./snort-2.9.20/src/dynamic-preprocessors/build/usr/local/lib/snort_dynamicpreprocessor/* /usr/local/lib/snort_dynamicpreprocessor/

3.3修改默认配置

打开配置文件

sudo vim /etc/snort/snort.conf

修改路径

var RULE_PATH /etc/snort/rules

var SO_RULE_PATH /etc/snort/so_rules

var PREPROC_RULE_PATH /etc/snort/preproc_rules

var WHITE_LIST_PATH /etc/snort/rules/iplists/

var BLACK_LIST_PATH /etc/snort/rules/iplists/

让黑白名单生效

3.4****安装rules包

wget Snort - Network Intrusion Detection & Prevention System

sudo tar zxvf snortrules-snapshot-29181.tar.gz -C /etc/snort

报错:

看报错描述,stdin: not in gzip format,其实已经说明了问题所在,即文件不是gzip格式。可以使用“file”命令查看文件的具体信息:

发现这个文件是 HTML document。回到snort官网,直接下载文件。

sudo tar zxvf snortrules-snapshot-29181.tar.gz -C /etc/snort

sudo cp /etc/snort/so_rules/precompiled/RHEL-8/x86-64/2.9.18.1/* /usr/local/lib/snort_dynamicrules/

4****启动测试

sudo snort -T -c /etc/snort/snort.conf

CentOS:

一、准备工作

使用镜像CentOS-6.8-x86_64-mini在虚拟机中安装操作系统。

默认安装时,网络IP是自动获取的,需要改成静态IP地址。

#ifconfig -a //查看网卡配置信息

#vi /etc/sysconfig/network-scripts/ifcfg-eth0 //编辑网卡配置文件

修改为静态IP地址的方法是将BOOTPROTO=dhcp中的dhcp改为static,然后增加以下内容(根据内网环境配置IP):

IPADDR=192.168.91.128

NETMASK=255.255.255.0

GATEWAY=192.168.91.2

DNS1=192.168.91.2

DNS2=8.8.8.8 //DNS地址可以多个,要根据当地网络供应商进行添加

最后保存退出,重启网络服务。

一、使用 cat /etc/issue 命令看看自己系统版本是6.几,先找个小本本记下来

二、备份出问题的文件,以免出错后可以恢复。

1.mkdir /etc/yum.repos.d/bakk //新建文件夹

2.mv /etc/yum.repos.d/* /etc/yum.repos.d/bakk //会出现报错,不用管

三、如下打开配置文件CentOS-Base.repo

vim /etc/yum.repos.d/CentOS-Base.repo

清空!

把下方代码复制进去

注意:如果你的系统版本不是6.7版本

需要先把代码中5个“baseurl“里的“6.7”更换成你自己的系统版本

CentOS-Base.repo

The mirror system uses the connecting IP address of the client and the

update status of each mirror to pick mirrors that are updated to and

geographically close to the client.  You should use this for CentOS updates

unless you are manually picking other mirrors.

If the mirrorlist= does not work for you, as a fall back you can try the

remarked out baseurl= line instead.

[base]

name=CentOS-$releasever - Base

#mirrorlist=http://mirrorlist.centos.org/?release=KaTeX parse error: Expected 'EOF', got '&' at position 11: releasever&̲arch=basearch&repo=os&infra=$infra

#baseurl=https://mirrorlist.centos.org/centos/ r e l e a s e v e r / o s / releasever/os/ releasever/os/basearch/

baseurl=https://mirrors.aliyun.com/centos-vault/6.7/os/$basearch/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#released updates

[updates]

name=CentOS-$releasever - Updates

#mirrorlist=http://mirrorlist.centos.org/?release=KaTeX parse error: Expected 'EOF', got '&' at position 11: releasever&̲arch=basearch&repo=updates&infra=$infra

#baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/ r e l e a s e v e r / u p d a t e s / releasever/updates/ releasever/updates/basearch/

baseurl=https://mirrors.aliyun.com/centos-vault/6.7/updates/$basearch/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#additional packages that may be useful

[extras]

name=CentOS-$releasever - Extras

#mirrorlist=http://mirrorlist.centos.org/?release=KaTeX parse error: Expected 'EOF', got '&' at position 11: releasever&̲arch=basearch&repo=extras&infra=$infra

#baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/ r e l e a s e v e r / e x t r a s / releasever/extras/ releasever/extras/basearch/

baseurl=https://mirrors.aliyun.com/centos-vault/6.7/extras/$basearch/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#additional packages that extend functionality of existing packages

[centosplus]

name=CentOS-$releasever - Plus

#mirrorlist=http://mirrorlist.centos.org/?release=KaTeX parse error: Expected 'EOF', got '&' at position 11: releasever&̲arch=basearch&repo=centosplus&infra=$infra

#baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/ r e l e a s e v e r / c e n t o s p l u s / releasever/centosplus/ releasever/centosplus/basearch/

baseurl=https://mirrors.aliyun.com/centos-vault/6.7/centosplus/$basearch/

gpgcheck=1

enabled=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#contrib - packages by Centos Users

[contrib]

name=CentOS-$releasever - Contrib

#mirrorlist=http://mirrorlist.centos.org/?release=KaTeX parse error: Expected 'EOF', got '&' at position 11: releasever&̲arch=basearch&repo=contrib&infra=$infra

#baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/ r e l e a s e v e r / c o n t r i b / releasever/contrib/ releasever/contrib/basearch/

baseurl=https://mirrors.aliyun.com/centos-vault/6.7/contrib/$basearch/

gpgcheck=1

enabled=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

四、清除yum缓存。

yum clean all

五、将服务器上的软件包信息缓存到本地,提高搜索、安装软件的速度

yum makecache

到这一步yum功能就正常开启了。

#yum -y update                                              //更新系统,时间较长

步骤6.复制软件到指定目录。

将libdnet-1.12.tgz、daq-2.0.4.tar.gz、snort-2.9.7.0.tar.gz、snortrules-snapshot-2970.tar.gz这4个文件用WinSCP复制到CentOS 6.8系统/usr/local/src/目录下。

经过以上6个步骤之后,Snort安装的准备工作完成。

二、编译并安装Snort

准备工作完成之后,接着开始正式安装Snort。编译安装Snort需要如下10个步骤。

步骤1.安装基本环境和依赖包。

#yum install -y gcc gcc-c++ flex bison zlib-devel zlib-static libxml2 libpcap pcre-devel pcre-static libpcap-devel.x8664 tcpdump git libtool curl man make

注意,如果没有安装pcre,在预编译时就会出现以下问题,比如我们执行./configure时,报错提示如下:

ERROR! Libpcre library not found, go get it from http://www.pcre.org

步骤2.解压libdnet、DAQ及Snort安装包。

在服务器的安装配置过程中,大家很可能会到官网下载最新版本的源码包,但是那样就会遇到各种依赖包缺失的问题,导致无法安装成功。因为有些软件(比如Snort)要在DAQ(Data AcQuisition,数据采集器)library安装好之后才能继续安装,而只有先libdnet安装完成,才能继续安装DAQ,否则会报错找不到依赖文件,具体操作如下:

#cd /usr/local/src

#tar -zxvf libdnet-1.12.tgz

#tar -zxvf daq-2.0.4.tar.gz

#tar -zxvf snort-2.9.7.0.tar.gz

下面必须依次安装libdnet、DAQ和Snort这3个包。

● 安装libdnet-1.12.tgz。

#cd /usr/local/src/libdnet-1.12/

#./configure

#make && make install

● 安装DAQ。

wget http://www.tcpdump.org/release/libpcap-1.0.0.tar.gz

tar xvfz libpcap-1.0.0.tar.gz

cd libpcap-1.0.0/

./configure

make

make install

#cd daq-2.0.4

#./configure

编译环境检查完成之后,我们可以看到AFPacket DAQ module,Dump DAQ module,IPFW DAQ module,PCAP DAQ module的状态都是“yes”只有这样才能继续编译软件包。

#make && make install //编译、安装

● 安装Snort 2.9(安装Snort前一定要正确安装libdnet和DAQ以及zlib)。

#cd /usr/local/src/snort-2.9.7.0

#./configure --enable-sourcefire

#make && make install

编译过程中没有报错信息即可进行安装。

步骤3.添加用户和组。

创建用户和组,并设置权限。在root身份下解包的文件权限都与root有关,所以要修改成Snort用户的属主和相关权限。

#groupadd -g 40000 snort //新添加一个Snort组

#useradd snort -u 40000 -d /var/log/snort -s /sbin/nologin -c SNORT_IDS -g snort

//将Snort用户加入Snort组,新建目录/var/log/snort,并且不允许登录系统

步骤4.配置Snort。

● 新建目录/etc/snort/。

#mkdir /etc/snort/

● 将snortrules-snapshot-2970.tar.gz解压到/etc/snort/目录下。

#cd /etc/snort

tar –zxvf /usr/local/src/snortrules-snapshot-2970.tar.gz –C .     (此步骤很关键,解压到当前目录)

完成此命令之后会在/etc/snort/目录下生成etc 、preproc_rules 、rules、so_rules共4个目录。

#cp /etc/snort/etc/sid-msg.map /etc/snort

● 将下载的Snort压缩包(snort-2.9.7.0.tar.gz),解压缩后复制到/etc/snort/目录下。

#cd /etc/snort/

#cp /usr/local/src/snort-2.9.7.0/etc/* .

● 设置目录/etc/snort及其下所有文件的属主和属组。

#chown -R snort:snort *

● 新建黑白名单规则文件。

#touch /etc/snort/rules/white_list.rules /etc/snort/rules/black_list.rules

在/etc/snort/rules下新建white_list.rules和black_list.rules两个文件。

● 编辑配置文件snort.conf,修改以下几行的内容。

#vi /etc/snort/snort.conf

● 配置Snort.conf中的变量

在snort.conf配置文件中有很多变量和选择,这些变量作用于rules目录下的所有规则。作为初学者需要掌握最重要的两个分别是:

$HOME_NET:你想监控的网络(用CIDR格式表示)。

$EXTERNAL_NET:连接外部,不受信任的网络。

这两个变量的默认值都是“any”,简单理解就是“默认监控一切”。但是我们需要进行适当修改,下面我们来设置网络变量,首将第45行的ipvar HOME_NET any改为ipvar HOME_NET 192.168.x.x网段,并写成CIDR格式。也可以添加多个网段,本实验中监控网段为192.168.11.0/24,来看下面的例子。

ipvar HOME_NET [192.168.11.0/24] //如果不加限制,网段地址也可以改为"any"

将48行ipvar EXTERNAL_NET any 改为ipvar EXTERNAL_NET $HOME_NET

如果当前网段还有DNS、SMTP、HTTP、SQLServer、SSH服务,我们推荐用如下方法定义变量。

ipvar DNS_SERVERS $HOME_NET

ipvar SMTP_SERVERS $HOME_NET

ipvar HTTP_SERVERS $HOME_NET

ipvar SQL_SERVERS $HOME_NET

ipvar SNMP_SERVERS $HOME_NET

ipvar SSH_SERVERS $HOME_NET

注意: 对于修改 H O M E _ N E T 、 HOME\_NET、 HOME_NETEXTERNAL_NET变量为非必须项,对于初学者而言,不修改沿用原默认值any也可以。

但下面的相对规则路径就必须改成绝对路径了,否则启动snort时会报错。

第104行 var RULE_PATH …/ruls 改为var RULE_PATH /etc/snort/rules

第105行 var SO_RULE_PATH …/so_rules 改为var SO_RULE_PATH /etc/snort/so_rules

第106行 var PREPROC_RULE_PATH …/preproc_rules 改为var PREPROC_RULE_PATH/etc/snort/ preproc_rules

第113行 var WHITE_LIST_PATH …/rules 改为var WHITE_LIST_PATH /etc/snort/rules

第114行 var BLACK_LIST_PATH …/rules 改为var BLACK_LIST_PATH /etc/snort/rules

● 设置日志保存路径。

第186行 config logdir:/var/log/snort/

● 配置输出插件。

Snort可通过数据库插件(spo_database.c和spo_database.h)将预处理器输出的日志写入数据库,但下面的配置一方面将报警写入alert文件,另一方面将预处理器输出的日志写入到unified2格式的二进制文件中,以供Barnyard2读取使用。

将第521行修改成如下内容:

output unified2:filename snort.log,limit 128

以上几处修改时记得去掉注释,修改完成后,保存退出,对snort.conf配置文件的修改告一段落,接着进行下一步操作。

步骤5.新建目录snort_dynamicrules并设置属主和属组权限。

#mkdir -p /usr/local/lib/snort_dynamicrules

#chown -R snort:snort /usr/local/lib/snort_dynamicrules

#chmod -R 755 /usr/local/lib/snort_dynamicrules

步骤6.在/usr/sbin/目录下新建名为Snort的软链接文件。

#cd /usr/sbin

#ln -s /usr/local/bin/snort snort

步骤7.添加测试规则。

我们在安装Snort时已经复制了很多规则文件,但这些文件内的规则默认都被注销了,先不要管这些注销的规则,下面我们来写一条规则。

#vi /etc/snort/rules/local.rules

加入如下内容:

alert icmp any any -> $HOME_NET any (msg:“ICMP Packet Detected”;sid:1000003;rev:1;)

保存退出,我们就完成了第一条检测规则的编写。

步骤8.测试Snort。

#snort -T -i eth0 -u snort -g snort -c /etc/snort/snort.conf

注意:这里的参数“-T”表示测试完成之后即退出snort程序。

如果配置正确,则系统启动后显示如下内容。

如出现“Snort successfully validated the configuration!”的提示,则表示安装配置成功。

步骤9.用ping命令测试。

用ping命令进行测试的目的是为了让snort产生报警。ping命令使用ICMP协议,在IDS中使用libpcap函数所捕获的也是ICMP数据包。下面在Snort主机上操作:

#snort -i eth0 -c /etc/snort/snort.conf -A fast

注:以上命令中-A fast的含义如下。

-A fast含义:该参数报警信息包括以下内容:

timestamp时间戳

报警消息

源/目的IP地址

端口

输入上面的命令之后,报警记录在/var/log/snort/alert和/var/log/snort/snort.log.timestamp(这是一个存储数据包的二进制文件,用tail命令无法读取)中。用下面的命令直观查看alert报警。

#cd /var/log/snort/

#tail -f /var/log/snort/alert //查看报警

实例:

/var/log/snort/alert是文本文件,我们可以用任何编辑器来查看。

下面要将这些报警存储到数据库。

注意:在上面介绍的第6、7步骤中如果没有设置正确的路径,那么在启动Snort时,就会出现找不到动态规则的文件,发生致命错误导致程序异常退出。

ERROR:parser.c(5047)

加深理解:我们说理解/etc/snort/sid-msg.map这个文件的意义非常重要,实体signature表示的是报警信息列表规范化,即将报警事件信息按规则编号(sig_id)、规则描述(sig_name)、规则分类编号(sig_class_id)规则优先级(sig_priority)规则版本号(sig_rev),规则在snort中的内部编号(sig_sid;sig-gid)进行规范化存储。

其中的sig_class_id和sig_prority的具体内容包含在classification.config文件中;而sid_sid和sid_gid将文件/etc/snort/gen-msg.map中的一个消息和该snort规则建立一个映射关系。

对classification的解释:

文件Classification.config来自于snortrules-snapshot-2970.tar.gz压缩包。

此处单词classification本意是问题分类,在snort官网下载的安装包内有使用手册,其中有详细的classification分类表。

用在这里表示记录入侵签名的分类,各入侵签名所属的分类在编写对应的Snort规则时通过制定classification属性值来指定。

clasification.config这个配置文件,同时被/etc/snort/snort.conf和/etc/snort/barnyard2.conf这两个关键配置文件所引用。

稍后我们在进行BASE调试实验过程中还会发现classification的身影。

另外,做为基础用户我们需要了解 snort将1~1000000做为自己的保留的内部编号,而将大于1000000 编号供使用者自己使用。这是一种习惯,而非强制,所以我们自己编写规则时,需要在sid-msg.map添加自己的规则编号和消息。其中sig_reference、sig_class是对他其中sig_id和sig_class_id属性的扩展描述。

三、将Snort报警存入MySQL数据库

将Snort报警存入MySQL数据库需要如下几个步骤。

步骤1.安装MySQL数据库及PHP扩展。

#yum install -y mysql-server mysql-devel php-mysql php-pear php-gd libtool php-imap php-ldap php-odbc php-xml php-pecl-apc

#chkconfig --level 235 mysqld on//将MySQL服务设置为在运行级别为2、3、5时都是开启状态

#/etc/init.d/mysqld start

步骤2.为数据库管理员root赋予密码(为调试方便暂设定纯数字密码123456)。

#/usr/bin/mysqladmin -u root password ‘123456’

注意,root用户登录phpMyAdmin时,同样使用这个密码。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
img

给大家的福利

零基础入门

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

同时每个成长路线对应的板块都有配套的视频提供:

在这里插入图片描述

因篇幅有限,仅展示部分资料

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

8)]
[外链图片转存中…(img-TT54JaPB-1712767944089)]
[外链图片转存中…(img-ETZ78wBf-1712767944089)]
[外链图片转存中…(img-G9E4fdZI-1712767944090)]
[外链图片转存中…(img-AOnkf7vr-1712767944090)]
[外链图片转存中…(img-nue0i1Jp-1712767944090)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
[外链图片转存中…(img-Zz0fcAOT-1712767944091)]

给大家的福利

零基础入门

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

同时每个成长路线对应的板块都有配套的视频提供:

在这里插入图片描述

因篇幅有限,仅展示部分资料

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-HtePKyob-1712767944091)]

  • 22
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要让 Snort 读取数据库中的规则,你需要在 Snort 的配置文件中指定使用数据库作为规则源。可以按照以下步骤: 1. 打开 Snort 的配置文件,通常是 `/etc/snort/snort.conf`。 2. 找到 `var RULE_PATH`,注释掉该行,并添加以下内容: ``` var RULE_PATH /usr/local/snort/rules ``` 这里将规则路径指定为 `/usr/local/snort/rules`,你可以根据实际情况进行修改。 3. 找到 `var RULES_FILE`,注释掉该行,并添加以下内容: ``` var RULES_FILE /usr/local/snort/rules/registered_rules.rules ``` 这里将规则文件指定为 `registered_rules.rules`,你也可以根据实际情况进行修改。 4. 找到 `include $RULE_PATH/$RULES_FILE`,注释掉该行,并添加以下内容: ``` include $RULE_PATH/local.rules ``` 这里包含了一个名为 `local.rules` 的文件,该文件将用于从数据库中加载规则。 5. 保存配置文件并退出。 接下来,你需要在 `local.rules` 文件中指定使用数据库作为规则源。可以按照以下步骤: 1. 创建一个名为 `local.rules` 的文件,保存在 `/usr/local/snort/rules` 目录下。 2. 添加以下内容: ``` # Load rules from database include db.rules ``` 这里使用 `include` 命令从 `db.rules` 文件中加载规则。 3. 保存文件并退出。 现在,你可以使用 Snort 命令行工具或 Snort 桌面应用程序来管理数据库中的规则。当 Snort 启动时,它会自动从数据库中加载规则并开始监控网络流量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值