snort和iptables联动测试

原博客:https://blog.csdn.net/hexf9632/article/details/98200876

主要记录自己实验的,部分文件位置和命令因为安装情况不一样,根据自己情况改了。

用的snort3,还没成功,目前主要的不同点就是snort配置文件和alert文件了,之后换snort2再来试一次

1、安装guardian  ,

下载网址https://www.chaotic.org/guardian/

解压

wget https://www.chaotic.org/guardian/
tar -zxvf guardian-1.7.tar.gz

配置(这里原来链接的目录是etc/snort,但我前面跟的安装教程目录是/usr/local/etc/snort,这里直接改了。)

# cd guardian-1.7
# touch /usr/local/etc/snort/guardian.ignore
# touch /usr/local/etc/snort/guardian.target
# touch /var/log/snort/guardian.log
# cp guardian.pl /usr/local/bin/
# cp scripts/iptables_block.sh /usr/local/bin/guardian_block.sh
# cp scripts/iptables_unblock.sh /usr/local/bin/guardian_unblock.sh
# cp guardian.conf /usr/local/etc/snort

编辑guardian配置文件,vi /usr/local/etc/snort/guardian.conf

Interface   ens33
LogFile    /var/log/snort/guardian.log
AlertFile   /var/log/snort/alert_json.txt             //alert文件的位置
IgnoreFile  /usr/local/etc/snort/guardian.ignore        //白名单
targetFile   /usr/local/etc/snort/guardian.target        //黑名单
TimeLimit 120                       //阻断时间,以秒为单位

guardian启动

 /usr/bin/perl /usr/local/bin/guardian.pl -c /usr/local/etc/snort/guardian.conf
#或进入guardian.pl在的目录


root@y:~/snort_src/guardian-1.7# perl ./guardian.pl -c /usr/local/etc/snort/guardian.conf
OS shows Linux
My ip address and interface are: 192.168.79.131       ens33
Loaded 0 addresses from /usr/local/etc/snort/guardian.ignore
Loaded 0 addresses from /usr/local/etc/snort/guardian.target
Becoming a daemon..
root@y:~/snort_src/guardian-1.7# 

出现了第一个报错

参考链接https://www.jianshu.com/p/7fcb7a0e553a

第一个use不知道是哪个系统的,直接用了第二个安装兼容perl4的包的命令

cpan Perl4::CoreLibs

然后又出现一个报错

参考这篇博客发现前面漏了HostIpAddr,去掉HostIpAddr前面的注释,补上地址

vim /usr/local/etc/snort/guardian.conf 
HostIpAddr 192.168.79.131

目前没报错了

Guardian 停止

ps -ef|grep guardian
kill -9 pid

图来自:https://www.cnblogs.com/atai/p/14393027.html

2、联动测试

测试规则是否加载生效,vi /usr/local/etc/rules/local.rules,添加下面两条规则

alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg:“OUT”; sid:5000005)
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:“IN”; sid:5000006)

规则说明:告警外网和内网之间的所有tcp流量,用来测试你的snort.conf配置是否有问题

启动snort,查看alert是否有日志

# snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/rules/local.rules
# cd /var/log/snort
# tail -f alert_json.txt 

如果可以看到日志,则表明snort.conf配置没有问题,可以继续下面的测试,否则请检查snort.conf的配置,以及snort目录和文件权限设置。

联动测试

如果之前的测试没有问题,请将/usr/local/etc/rules/local.rules你所添加的两条规则删除或注释掉。

vi /usr/local/etc/rules/local.rules

登录另一台windows测试主机(注意:如果用本机扫描很有可能导致snort主机无法登陆),打开浏览器,登录http://tools.hetianlab.com/tools/X-Scan-v3.3-cn.rar下载x-scan并解压,双击文件打开x-scan

设置扫描参数

点击“扫描参数”按钮,将指定IP范围设置成你的snort主机ip地址,在“全局设置”的“扫描模块”中选中“全选”,“插件设置”的“SNMP相关设置”、“NETBIOS相关设置”、“漏洞检测脚本设置”均选择全部选中。点击开始按钮,开始扫描。

观察alert是否有告警日志

# cd /var/log/snort
# tail -f alert

发现告警日志,启动guardian与iptables联动

# /usr/bin/perl /usr/local/bin/guardian.pl -c /usr/local/etc/snort/guardian.conf

在snort主机上执行iptables -L观察是否有规则加入,有规则即实验成功。

实验未成功的问题解决

实验失败,没有规则加入,感觉可能是guardian下的不是原来推荐的实验室的(原链接失效,另外在网上找的),估计配置不太行。

以下更正来自b站视频(【网络安全教程】手动搭建Snort系统!CentOS 7下的Snort+Iptables+Guardian联动实验_哔哩哔哩_bilibili

1、找了几个文件,发现没有脚本......,到网上找了个脚本(链接:https://blog.51cto.com/chenguang/7823276),但我不太懂脚本语言,不知道有的地方前面的空格对不对的上

下面改动的几个guardian文件位置都在前面复制的地方/usr/local/bin

#!/bin/bash 
cd /usr/local/bin
#start函数负责启动guardian程序。它首先更新环境变量PATH以包含本地二进制路径,然后
使用指定的配置文件启动guardian程序。
start()
{
# 将/usr/local/bin添加到PATH环境变量中 
        export PATH=$PATH:/usr/local/bin 
# 使用/etc/guardian.conf启动guardian.pl脚本 
        /usr/local/bin/guardian.pl -c /usr/local/etc/snort/guardian.conf
}

# stop函数负责停止guardian程序。它首先检查guardian是否正在运行,如果是,就杀掉进
程,否则就输出"guardian is not running ...."。 
stop()
{
# 查询名为'guardian.pl *-c'的进程 
        ps aux |grep 'guardian.pl *-c' 2>&1 > /dev/null
#判断语句,如果进程存在,则停止该进程 
        if [ $? -eq 0 ];
        then
        kill `ps aux |grep 'guardian.pl *-c' `
#如果进程不存在,则输出"guardian is not running ...." 
        else
        echo "guardian is not running ...." 
        fi
}
# status函数用于检查guardian进程是否正在运行,如果是,输出"guardian is running ....",否则输出"guardian is not running ...."。 
status()
{
        ps aux |grep 'guardian.pl *-c' 2>&1 > /dev/null
        if [ $? -eq 0 ];
        then
        echo "guardian is running ...." 
        else
        echo "guardian is not running ...." 
        fi
}
# 根据传入的参数($1)执行不同的函数 
case "$1" in
# 如果传入的参数是start,则调用start函数 
start)
start
;;
# 如果传入的参数是stop,则调用stop函数 
stop)
stop
;;
# 如果传入的参数是restart,则先调用stop函数,再调用start函数 
restart)
stop
start
;;
# 如果传入的参数是status,则调用status函数 
status)
status;;
*)
# 如果传入的参数不是上述的任何一种,那么输出使用方法 
echo $"Usage: $0 {start|stop|restart|status}" 
esac

执行脚本

bash guardian.sh

guardian_block.sh增加内容

/sbin/iptables -I INPUT -p tcp -s $source -i &interface -j REJECT --reject-with tcp-reset

guardian_unblock.sh增加内容

/sbin/iptables -D INPUT -p tcp -s $source -i $interface -j REJECT --reject-with
tcp-reset

查看guardian状态

root@y:/usr/local/bin# bash guardian.sh status
guardian is running ....

2、运行snort(一般是snort.conf文件,我跟的是lua,没有conf文件)

snort -c /usr/local/etc/snort/snort.lua -i ens33 -A fast

3、更改local.rules

alert icmp any any -> any any (msg:"snort test";dsize:>65499;itype:8;sid:10000003;rev:1;)

tail -f /var/log/snort/alert_json.txt

em……还是没成,继续找错,在视频支持下,对pl文件伸出了魔爪

根据地址对这里进行修改试试(和我的文件位置不同,但print输出貌似没啥影响)

190行

233和234行

又找到了一个guardian下载链接:
https://c4pr1c3.github.io/cuc-ns/chap0x09/exp.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

『F╰お╯X』

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值