草庐IT

snort入侵检测基础概述

lisenMiller 2023-03-28 原文

编写规则的分析

语法分析

alert icmp any any <> $HOME_NET any (logto:"task1";msg:"---msg---";sid:100001)
1    2   3  4 5   6   7           8

1.响应机制

snort对规则的响应机制有5种

alert #警报并记录
pass #忽略
log  #记录
activation #警报并启动另一个动态规则链
dynamic 由其他规则包调用

2.协议

snort能够分析的协议是:TCP、UDP和ICMP

3和4

源IP地址   源IP地址端口 #这些地址只能使用数字/CIDR

5 数据包流向

->单向
<-单向
<>双向

6和7

目的ip地址 目的ip地址端口

8可选项内容

1 msg 在警报和记录的数据中打印消息。
 2 logto 将数据包记录到一个用户指定的文件 中。
 3 ttl 检测 IP 数据包的 TTL 域。
 4 id 检测 IP 数据包的分段 ID 域是否等于特定 的值。
 5 dsize 检测数据包的有效荷载是否等于特定 的值。
 6 content 在数据包的有效荷载重搜索特定的模 式串。
 7 offset 设定 content 中所说的起点。
 8 depth 设定 content 中所说的终点。
 9 nocase 设定搜索中使用与大小写无关的方 式。
10 flags 检测 TCP 数据包的标志是否等于特定的 值。
11 seq 检测 TCP 的顺序号是否对于特定的值。
12 ack 检测 TCP 的应答域否对于特定的值。
13 itype 检测 ICMP 类型域是否等于特定的值。
14 icode 检测 ICMP CODE域是否等于特定的值。
15 session 将应用层中一个指定的会话总的数据 复制出来。
16 icmp id 检测 ICMP ECHO ID 域是否等于特 定的值。
17 icmp seq 检测 ICMP ECHO 顺序号是否等于 特定的值。
18 ipoption 检测 IP 数据包中的协议头部的选项 部分是否存在特定值。
19 rpc 检测 RPC服务的特定应用。
20 resp 主动应答。
格式 key:"pass";

告警设置

snort运行参数

-c     指定配置文件
-l        指定log存放目录
-L        指定log记录名称,与-l配合
-r        指定读取的pcap报文

接口配置参数
-i   #指定监听报文接口
-I   #报警输出可以指定某个接口

-h 指定目标主机 192.168.0.0/24指定这个网段的所有主机
-dve 指定显示数据链路层的信息

 

报警模式的设置

-A fast  #快速警报模式。使用时间戳、警报消息、源和目标IP/端口以简单格式写入警报
-A full  #完全警报模式。这是默认警报模式,如果未指定模式,将自动使用
-A unsock  #向另一个程序可以监听的unix套接字发送警报
-A none  #关闭警报
-A console  #向控制台发送“快速样式”警报
-A cmg  #生成“cmg样式“警报

snort.conf详解

1)set the network variables  #配置了多组IP变量 端口变量用于rules 部分路径信息寻找规则和库文件 
2)Configure the decoder  #解码器报警
3)Configure the base detection engine #配置基础检测引擎参数
4) Configure dynamic loaded libraries #配置动态加载库路径,动态规则路径
5) Configure preprocessors # 配置预处理器的开关,会把部分协议数据转化成变量
6) Configure output plugins #配置高速模式下的输出方式
7) Customize your rule set #配置自定义规则
8) Customize preprocessor and decoder rule set #配置预处理器和解码器规则集合
9) Customize shared object rule set  #配置共享对象规则
# 设置要保护的网络地址
ipvar HOME_NET any

# 设置外部网络地址。在大多数情况下保留为 any
ipvar EXTERNAL_NET any

# 您网络上的DNS服务器列表
ipvar DNS_SERVERS $HOME_NET

# 您网络上的SMTP服务器列表
ipvar SMTP_SERVERS $HOME_NET

# 您网络上的web服务器列表
ipvar HTTP_SERVERS $HOME_NET

# 您网络上的sql服务器列表 
ipvar SQL_SERVERS $HOME_NET

# 您网络上的telnet服务器列表
ipvar TELNET_SERVERS $HOME_NET

# 您网络上的ssh服务器列表
ipvar SSH_SERVERS $HOME_NET

# 您网络上的ftp服务器列表
ipvar FTP_SERVERS $HOME_NET

# 您网络上的sip服务器列表
ipvar SIP_SERVERS $HOME_NET

# 运行web服务器的端口列表
portvar HTTP_PORTS [36,80,81,82,83,84,85,86,87,88,89,90,311,383,443,555,591,593,623,631,664,801,808,818,901,972,1158,1220,1270,1414,1533,1581,1719,1720,1741,1801,1812,1830,1942,2231,2301,2375,2381,2578,2809,2869,2980,3000,3029,3037,3057,3128,3443,3702,4000,4343,4592,4848,5000,5054,5060,5061,5117,5222,5250,5416,5443,5450,5480,5555,5600,5814,5894,5984,5985,5986,6080,6173,6988,7000,7001,7005,7070,7071,7080,7144,7145,7180,7181,7510,7770,7777,7778,7779,8000,8001,8008,8014,8015,8020,8028,8040,8080,8081,8082,8085,8088,8090,8095,8118,8123,8161,8180,8181,8182,8222,8243,8280,8300,8333,8344,8393,8400,8443,8484,8500,8509,8694,8787,8800,8852,8880,8888,8899,8983,9000,9001,9002,9050,9060,9080,9090,9091,9111,9200,9201,9290,9443,9447,9700,9710,9788,9830,9850,9999,10000,10080,10100,10250,10255,10297,10443,11371,12601,13014,14592,15489,16000,16992,16993,16994,16995,17000,18081,19980,29991,30007,30018,30888,33300,34412,34443,34444,36099,40007,41080,44449,49152,49153,50000,50002,50452,51423,53331,54444,55252,55555,56712]

# 查看shellcode的端口列表,shellcode是一段用于利用软件漏洞而执行的代码
portvar SHELLCODE_PORTS !80

# 可能看到oracle攻击的端口列表
portvar ORACLE_PORTS 1024:

# 要查找SSH连接的端口列表
portvar SSH_PORTS 22

# 运行ftp服务器的端口列表
portvar FTP_PORTS [21,2100,3535]

#运行SIP服务器的端口列表
portvar SIP_PORTS [5060,5061,5600]

# 用于文件检查的文件数据端口列表
portvar FILE_DATA_PORTS [$HTTP_PORTS,110,143]

# GTP预处理器使用的GTP端口列表
portvar GTP_PORTS [2123,2152,3386]

# 其他变量,不要修改
ipvar AIM_SERVERS [64.12.24.0/23,64.12.28.0/23,64.12.161.0/24,64.12.163.0/24,64.12.200.0/24,205.188.3.0/24,205.188.5.0/24,205.188.7.0/24,205.188.9.0/24,205.188.153.0/24,205.188.179.0/24,205.188.248.0/24]

# 你的规则文件路径 (可以是相对路径)
var RULE_PATH ../rules
var SO_RULE_PATH ../so_rules
var PREPROC_RULE_PATH ../preproc_rules

#如果使用黑白名单预处理器,请配置这些
var WHITE_LIST_PATH ../rules
var BLACK_LIST_PATH ../rules
三种变量
ipvar   定义一组IP 这种定义可以是一种ip或几个ip ipvar example[1.1.1.1,2.2.2.0/24]
portvar  定义一组端口,可以是一个端口几个端口 端口范围 portvar exampble[80,91:94]
var    定义一个普通变量 var PREPROC_RULE_PATH ../preproc_rules

 

 

有关snort入侵检测基础概述的更多相关文章

  1. ruby - RuntimeError(自动加载常量 Apps 多线程时检测到循环依赖 - 2

    我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("

  2. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  3. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  4. 阿里云RDS——产品系列概述 - 2

    基础版云数据库RDS的产品系列包括基础版、高可用版、集群版、三节点企业版,本文介绍基础版实例的相关信息。RDS基础版实例也称为单机版实例,只有单个数据库节点,计算与存储分离,性价比超高。说明RDS基础版实例只有一个数据库节点,没有备节点作为热备份,因此当该节点意外宕机或者执行重启实例、变更配置、版本升级等任务时,会出现较长时间的不可用。如果业务对数据库的可用性要求较高,不建议使用基础版实例,可选择其他系列(如高可用版),部分基础版实例也支持升级为高可用版。基础版与高可用版的对比拓扑图如下所示。优势 性能由于不提供备节点,主节点不会因为实时的数据库复制而产生额外的性能开销,因此基础版的性能相对于

  5. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  6. ruby - 检测由 RSpec、Ruby 运行的代码 - 2

    我想知道我的代码是否在rspec下运行。这可能吗?原因是我正在加载一些错误记录器,这些记录器在测试期间会被故意错误(expect{x}.toraise_error)弄得乱七八糟。我查看了我的ENV变量,没有(明显的)测试环境变量的迹象。 最佳答案 在spec_helper.rb的开头添加:ENV['RACK_ENV']='test'现在您可以在代码中检查RACK_ENV是否经过测试。 关于ruby-检测由RSpec、Ruby运行的代码,我们在StackOverflow上找到一个类似的问题

  7. ruby - 使用 Ruby Daemons gem 检测停止 - 2

    我正在使用rubydaemongem。想知道如何向停止操作添加一些额外的步骤?希望我能检测到停止被调用,并向其添加一些额外的代码。任何人都知道我如何才能做到这一点? 最佳答案 查看守护程序gem代码,它似乎没有用于此目的的明显扩展点。但是,我想知道(在守护进程中)您是否可以捕获守护进程在发生“停止”时发送的KILL/TERM信号...?trap("TERM")do#executeyourextracodehereend或者你可以安装一个at_exit钩子(Hook):-at_exitdo#executeyourextracodehe

  8. ruby - Ruby 脚本如何检测到它正在 irb 中运行? - 2

    我有一个定义类的Ruby脚本。我希望脚本执行语句BoolParser.generate:file_base=>'bool_parser'仅当脚本作为可执行文件被调用时,而不是当它被irbrequire(或通过-r在命令行上传递)时。我可以用什么来包装上面的语句,以防止它在我的Ruby文件加载时执行? 最佳答案 条件$0==__FILE__...!/usr/bin/ruby1.8classBoolParserdefself.generate(args)p['BoolParser.generate',args]endendif$0==_

  9. Ruby 无法检测字符串中的换行符 - 2

    我有以下字符串,我想检测那里的换行符。但是Ruby的字符串方法include?检测不到它。我正在运行Ruby1.9.2p290。我哪里出错了?"/'ædres/\nYour".include?('\n')=>false 最佳答案 \n需要在双引号内,否则无法转义。>>"\n".include?'\n'=>false>>"\n".include?"\n"=>true 关于Ruby无法检测字符串中的换行符,我们在StackOverflow上找到一个类似的问题: h

  10. 【网络】-- 网络基础 - 2

    (本文是网络的宏观的概念铺垫)目录计算机网络背景网络发展认识"协议"网络协议初识协议分层OSI七层模型TCP/IP五层(或四层)模型报头以太网碰撞路由器IP地址和MAC地址IP地址与MAC地址总结IP地址MAC地址计算机网络背景网络发展        是最开始先有的计算机,计算机后来因为多项技术的水平升高,逐渐的计算机变的小型化、高效化。后来因为计算机其本身的计算能力比较的快速:独立模式:计算机之间相互独立。    如:有三个人,每个人做的不同的事物,但是是需要协作的完成。    而这三个人所做的事是需要进行协作的,然而刚开始因为每一台计算机之间都是互相独立的。所以前面的人处理完了就需要将数据

随机推荐