Suricata 离线部署及rules规则触发使用教程(支持windows虚拟机及centos7_arm64_服务器)

项目背景:
最近的需求是,在__不能连外网的__centos7系统的__arm64架构的__服务器上安装suricata,但是因为服务器只能在客户现场才能操作,所以我需要在本机研究好怎么安装和使用, 然后去客户现场直接部署

实现方案:

利用yumdownloader和createrepo创建离线安装环境
先在windows的虚拟机上安装成功,并学会suricata软件简单的使用
然后弄个能联网的arm64架构的服务器(我的是在阿里云租的),把离线安装需要的文件拷贝下来,并弄成离线包和离线安装脚本,放到客户不能联网的机器上安装

具体操作:
下面以windows虚拟机为例介绍制作离线包的过程(centos7_arm64大致流程差不多,只是需要下载的库有一些差异)
1.在vmware下新建centos7的虚拟机,并与windows共享文件夹(不共享也行,但是下载的文件要手动复制出去),给虚拟机联网权限

https://blog.csdn.net/qq_45560958/article/details/132878292?spm=1001.2014.3001.5502

注:新建虚拟机如果选择最小安装的话,就没有界面了,所以我一般是按照下图创建



2.在能联网的机器上,下载suricata安装包

先安装yumdownloader,用以下载离线包

yum update

yum install yum-utils

再下载安装epel,直接用yumdownloader下载suricata会发现如下图报错,因为yum里没有suricata的源,所以要先下载安装epel

yumdownloader --resolve --destdir=/mnt/shareDocker/ epel-release

yum install -y epel-release

再下载suricata

yumdownloader --resolve --destdir=/mnt/shareDocker/ suricata

此时安装包就下载好了,文件路径为/mnt/shareDocker/,文件如图

插个眼::::::::::但是这些安装包根据实际情况,并不一定够用,等会安装的时候有可能报缺库,在这里插个眼,如果报错的话,根据本文档下面的教程把库下载好,回到这里重新制作离线仓库。

所有的离线包下载好了,创建离线仓库(很重要)

createrepo /mnt/shareDocker/offlineFile

把上面offline文件夹拷贝到离线的机器上

接下来在离线机器上安装软件

离线机器

现在所有的包下载好了,接下来是把文件拷贝到离线的机器上,在离线的机器上配置离线源并安装相应的软件

因为我在离线机器和在线机器映射的是同一个windows的文件夹,所以我两个虚拟机里的文件内容是一样的,如果你没有映射同一个文件夹,可以直接把在线机器的文件拷贝出来,然后放到离线机器的任意目录下面也可以以,下面配置离线源

cd /etc/yum.repos.d/

ls

上图的文件夹为在线源,创建个备份文件夹,把这些源都移动进去(相当于删除了),然后创建自己的离线源(因为这个机器不能联网,所以要这些文件也没什么用)

mkdir CentOS_back

mv *.repo CentOS_back/

touch offline.repo

 offline.repo文件内容如下,baseurl里面填你下载的那一堆离线包的路径

yum clean all

yum makecache

yum install epel-release

再次进入/etc/yum.repos.d/,把安装epel生成的repo文件移动到备份文件夹

cd /etc/yum.repos.d/

mv epel.repo Centos_back/

mv epel-testing.repo Centos_back

终于要安装suricata了!!!

yum install suricata

 注:这一次虽然直接安装成功了,但是我第一次安装suricata的时候报错,缺少库,不论是虚拟机上和在线的centos服务器上都报缺库,并且他们缺的库名称还不一样,报错的时候我没截图,如果你也会报错的话解决方案如下,只做参考,实际根据你缺的库进行调整。

把缺的库补齐之后,需要再次回到上面“插个眼”的地方,重新创建一下离线仓库

yumdownloader --resolve --destdir=/mnt/shareDocker/offlinerpm epel-release

yum install epel-release

yumdownloader --resolve --destdir=/mnt/shareDocker/offlinerpm suricata

yumdownloader --resolve --destdir=/mnt/shareDocker/offlinerpm PyYAML

yumdownloader --resolve --destdir=/mnt/shareDocker/offlinerpm libnetfilter_queue

yumdownloader --resolve --destdir=/mnt/shareDocker/offlinerpm libprelude

yumdownloader --resolve --destdir=/mnt/shareDocker/offlinerpm hiredis

yumdownloader --resolve --destdir=/mnt/shareDocker/offlinerpm glibc

yumdownloader --resolve --destdir=/mnt/shareDocker/offlinerpm libnet

yumdownloader --resolve --destdir=/mnt/shareDocker/offlinerpm libnfnetlink

 这是我放到现场的库文件,主要按照上面的方式下载的,实在找不到就去官网看看

看一下版本号,证明suricata安装好了 ,注意-V要大写

suricata -V

下面是suricata简单的使用

打开suricate的配置文件,翻到文档的最下面找到default-rule-path:那一行

vi /etc/suricata/suricata.yaml

打开上图显示的文件,如果没有这个文件就自己创建

vi /var/lib/suricata/rules/suricata.rules

把下面的文本复制进去,这些是检测规则

告警分别是:60s内超过5个不同的ip地址通过tcp/udp与本地,60s内超过20个tcp连接请求,60s内超过10个tcp成功建立连接(没错,成功建立的连接过多也会告警),10s内收到超过100个udp的包 ,60s内被ping超过6次(这个最容易检测,用别的机器ping几次就行)

alert tcp any any -> any any (msg:"Port Scanning Detected TCP"; flags:S; threshold:type both, track by_src, count 5, seconds 10; sid:199001;)
alert udp any any -> any any (msg:"Port Scan Detected UDP "; threshold: type threshold, track by_src, count 5, seconds 10; sid:100007;)
alert tcp any any -> any any (msg:"NetAttack Large number of connection requests"; threshold: type threshold, track by_src, count 20, seconds 60; sid:199002;)
alert tcp any any -> any any (msg:"NetAttack Too Many Established Connection"; flow: established, to_client; threshold: type both, track by_src, count 10, seconds 60; sid:199003;)
alert tcp any any -> any any (msg:"NetAttack Frequent login failures"; flow: established, to_server; content:"Failed password"; threshold: type threshold, track by_src, count 5, seconds 60; sid:199004;)
alert icmp any any -> any any (msg:"NetAttack ICMP Smurf Flood Attack Detected"; icode:0; itype:8; threshold: type threshold, track by_src, count 6, seconds 60; sid:100005;)
alert udp any any -> any any (msg:"NetAttack Possible UDP Flood Attack Detected"; threshold: type threshold, track by_src, count 100, seconds 10; sid:100006;)

运行suricata,-i 后面跟的是要检测的网卡,根据实际情况修改

 suricata -c /etc/suricata/suricata.yaml -i ens33

 不报错的话就算是运行成功了,这个时候查看

cd /var/log/suricata/

tail -f fast.log

 fast.log文件无内容

用内网里的其他机器,去ping这个机器,会发现 fast.log产生告警

此时suricata安装并运行成功

(如果觉得写的还行,就给个赞和评论把)

(如果觉得写的还行,就给个赞和评论把)

(如果觉得写的还行,就给个赞和评论把)

下面多写一点,去客户现场安装的时候,我写了个脚本自动部署,在联网机器上下载好文件并创建好离线仓库之后,只需要把这些文件拷贝到离线的机器上,然后修改一下脚本路径他就能自动安装了,脚本内容如下,你修改一下第一行的路径就行

offline_folder="/path/to/offlinerpm"

#!/bin/bash

offline_folder="/path/to/offlinerpm"
back_folder="/etc/yum.repos.d/Centos_back"
folder="/var/lib/suricata/rules"
target_file="$folder/suricata.rules"

if [ ! -d "$back_folder" ]; then
    mkdir "$back_folder"
fi
mv /etc/yum.repos.d/*.repo "$back_folder"

cp "$offline_folder/MyOffline.repo"  "/etc/yum.repos.d/"
yum clean all
yum makecache

if ! rpm -q epel-release; then
    yum install -y epel-release
fi

mv /etc/yum.repos.d/*.repo "$back_folder"
cp "$offline_folder/MyOffline.repo"  /etc/yum.repos.d/
yum install -y suricata

if [ ! -d "$folder" ]; then
    mkdir -p "$folder"
fi

if [ -f "$target_file" ]; then
    rm "$target_file"
fi
cp "$offline_folder/suricata.rules" "$target_file"

suricata -V
suricata -c /etc/suricata/suricata.yaml -i ens33

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值