NIDS——suricata(三)

一、监控ICMP流量

1、ICMP流量特征

        四大特征分别为:消息类型(Type)、代码(Code)、校验和(Checksum)、数据字段(Data Field)。这里我们使用 type消息类型。

        ICMP 消息的类型字段标识了消息的类型。常见的类型包括回显请求(Echo Request,类型 8),回显应答(Echo Reply,类型 0),目的不可达(Destination Unreachable,类型 3),超时(Time Exceeded,类型 11)等。

        而 ping 命令就是利用 ICMP 回显请求和回显应答来检查网络连接的连通性。

2、获取ICMP流量

通过ping的方式来获取该流量

ping ip        

ping了四次

锁定特征

 

构造规则

在suricata中与Type* 8对应的是itype: 8,因此无需再写prce或content

 alert icmp $EXTERNAL_NET any <> $HOME_NET any (msg:"icmp流量检测"; itype:8;threshold: type threshold,track by_src,count 10,seconds 20;sid:561011;)

threshold:用于设定和定义基于特定条件的阈值规则。

type threshold:设定规则为阈值类型,还可以是type rate等,限制速率,防止DDOS攻击。

track by_src:根据源 IP 地址来跟踪请求。

count 10,seconds 20:20秒内发生10次.

意思是:在20秒内连续ping10次就触发警告。

添加测试

 添加:

测试:

成功

二、监控TCP流量

1、预警TCP连接过高(全连接)

        所谓的全连接简单来说就是建立TCP连接的过程,确保双方都准备好进行通信。攻击者通过构建大量的全连接使服务器崩溃。

  规则构建:

flow:established,to_server这是关键字

flow:to_client, established:匹配从服务器到客户端的已建立连接的数据包。
flow:to_server, established, only_stream:匹配从客户端到服务器的已建立连接的数据包,并且这些数据包属于单一的数据流。
flow:to_server, not_established, no_frag:匹配从客户端到服务器的数据包,但这些数据包不属于已建立的连接,并且不允许是分片的。

alert tcp $EXTERNAL_NET any <> $HOME_NET any (msg:"tcp连接过高,请及时检测!(全)"; flow:established,to_server;threshold: type threshold,track by_src,count 20,seconds 10;sid:561013;)

写入规则与测试:

写入:

测试:

在kali中使用如下命令安装wrk:
apt install wrk

全连接攻击:

wrk -c 300 -t 4 -d 600 http://192.168.248.134/pikachu
-c, 跟主机保持连接数量
-d, 测试持续时间
-t, 开启线程数

成功 

三、监控SSH流量

1、抓取登录失败流量

分析:

        ssh登录时客户端和服务端会交换密钥然后产生新的密钥New Keys,ssh在爆破时会产生很多次New Keys,这就是ssh爆破的一个特征。

        其中每个New Keys的最后都是如下图这样:

框住的是16进制。

2、构建规则

根据上述的特征,先构建正则表达式,匹配New Keys中的最后的内容

prce:"|15 00 00 00 00 00 00 00 00 00 00|"

构建整个规则:

alert ssh any any <> $HOME_NET 22 (msg:"SSH爆破"; content: "|15 00 00 00 00 00 00 00 00 00 00|"; threshold: type threshold, track by_src, count 2, seconds 20; sid:5622002;)

四、MySql预警

1、登录失败预警

(1)保证系统的mysql可以远程连接

这里我使用的是xampp中的自带的mysql,初始时是没有密码的

修改成如下如这样就可以远程连接了:

测试远程连接


远程连接成功。

(2)抓取流量

 查看wireshark抓取的流量信息

成功时:

既然成功了,也没必要提醒了。

失败时:

查看失败流量:

(3)编写规则

锁定关键点:

Error message: Access denied for user 'root'@'192.168.164.1' (using password: YES)

中的:

Access denied for user

编写规则:

首先要在/etc/suricata/suricata.yaml添加一个MySql端口(3306)的变量:

vi etc/suricata/suricata.yaml 

我这里没有设置,直接填写为3306

Suricata默认并没有提供对MySQL的应用层协议的支持,所以只能使用TCP协议。

规则:

alert tcp any any <> any 3306 (msg:"MySQL登录失败"; content:"Access denied for user"; nocase; sid:5620001;)

(4)添加规则并测试:

添加:

测试:

成功

2、Mysql爆破预警

 1、编写规则

在登录失败的基础上加上阈值来构建MySql爆破的监控规则:

alert tcp any any <> any 3306 (msg:"MySQL爆破攻击"; content:"Access denied for user"; nocase; threshold: type threshold, track by_src, count 5, seconds 10; sid:5620002;)

2、添加规则并测试

 添加:

测试:

成功

3、MySql木马写入

1、锁定语句:

select "<?php eval($_POST['code']); ?>" into outfile "/opt/shell.php";

2、构建规则 

alert tcp any any <> any 3306 (msg:"MySQL木马写入"; content:"into outfile"; nocase; pcre: "/eval|assert|system|_POST|_GET/i"; sid:5620004;)

3、添加规则与测试

 测试:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值