snort.conf分析
此文件包含一个snort配置样例。
共分五步骤:
1 设置你的网络变量
2 配置动态加载库
3 配置预处理器
4 配置输出插件
5 增加任意的运行时配置向导
6 自定义规则集
step1:设置你的网络变量1 其中针对本地网络给出3种方式:
a) 清晰指定你的本地网络
var HOME_NET 192.168.1.0/24
(如果希望构建的Snort支持IPV6支持,则这里定义网段的类型就
应该改为pvar)
b) 使用全局变量
var HOME_NET $eth0_ADDRESS
c) 也可一定义一个地址列表,中间用逗号隔开:
var HOME_NET [10.1.1.0/24,192.168.1.0/24] (列表中不能有空格)
d) 定义任意的IP地址
var HOME_NET any
2 针对外部网络
a) 全部
var EXTERNAL_NET any
b) 除了HOME_NET之外的
var EXTERNAL_NET !$HOME_NET
3 配置你的服务器列表
(如果你都没有运行一个web server,干嘛还要检测HTTP 攻击呢?这样可以基于IP地址进行快速的过滤,这些配置必须保持和$HOME_NET相同的配置框架)
DNS服务:
var DNS_SERVERS $HOME_NET
SMTP服务:
var SMTP_SERVERS $HOME_NET
Web 服务:
var HTTP_SERVERS $HOME_NET
SQL服务:
var SQL_SERVERZ $HOME_NET
Telnet服务:
var TELNET_SERVERS $HOME_NET
FTP服务:
var FTP_SERVERS $HOME_NET
SNMP服务:
var SNMP_SERVERS $HOME_NET
4 配置你的服务端口
这使得snort去跟踪针对特点端口应用的攻击,如你的web server在端口8180上,则你应这样配置:
portvar HTTP_PORTS 8180
不过这个值通常为80,因此定义为:
portvar HTTP_PORTS 80
如果你希望定义多HTTP端口,语法是这样的:
portvar HTTP_PROTS [80,8080] 或者
portvar HTTP_PROTS[80,8000:8080]
但是在rule中只能定义$HTTP_PORTS一次,之前曾有方法对此变量进行重定义,包含了两次定义,这种做法已经不再使用。
eg:
定义你希望发现SHELLCODE的端口:
portvar SHELLCODE_PORTS !80
可能发想对ORACLE的攻击:
portvar ORACLE_PORTS 1521
针对FTP服务的端口:
portvar FTP_PORTS 21
AIM 服务(聊天服务):
AOL公司有增加新的AIM 服务的习惯,我们将他们都增加到服务列表中,而不是修改它们的签名(这一句话,我还理解的不够透彻,原文是: AOL has a habit of adding new AIM servers, so instead of modifying signatures when they do, we add them to this list of servers.)
var AIM_SERVERS [64.12.24.0/23, ....]
5 配置你的rules文件路径
这个可以是一个相对路径(不过对于windows用户,最好给绝对路径)
var RULE_PATH /etc/snort/rules
var PREPROC_RULE_PATH /etc/snort/preproc_rules6 配置你的解码器
说明:snort的解码器会因为很多事情而产生警报,如报文头截断、不正常的长度和不经常使用的tcp 选项。
关闭一般解码事件:
config disable_decode_alerts
关闭针对实验TCP选项的警告
config disable_tcpopt_experimental_alerts
关闭针对失效TCP选型的警告
config disable_tcpopt_obsolete_alerts
关闭针对T/TCP警告的相应
config disable_tcpopt_ttcp_alerts
关闭针对所有TCP选项类型事件的相应
config disable_tcpopt_alerts
关闭针对非法ip选型的警告
config disable_ipopt_alerts
开启警告:如果(IP,TCP,UDP)的长度域中的值要比真实捕获数据包的长度值要大,则发出警告:
config enable_decode_oversized_alerts
同上面场景但是,但如果在inline模式中,将直接drop此包,但需保证上面的config: enable_decode_oversized_alerts已经开启:
config enable_decode_oversized_drops
7 配置你的检测引擎
如果你的电脑只有非常限定的资源,则需使用不同模式匹配:
config detection: search-method lowmem
8 配置inline重置(resets)
如果你在snort的inlineMode()模式中运行iptables防火墙,我们现在可以通过物理设备执行重置操作。我们从iptables中获取indev,然后使用此作为发送resets的接口。这个配置将使用源mac地址来作为你想重置包的参数。这种方式bridge将会继续保持stealthy. 如果源mac地址选项没有设置,我们默认将通过raw socket发送resets,但需要ip地址。
config layer2resets: 00:06:76:DD:5F:E3
**********************************************
Step2: 配置动态加载库
如果snort配置了使用动态加载库,则库将会在这里加载。
下面的配置选型都可以通过command行执行。
1 从安装路径加载所有动态预处理器
(=在命令行选型:--dynamic-preprocessor-lib-dir)
dynamicpreprocessor directory /usr/lib/snort_dynamicpreprocessor/
2 从安装路径加载指定的动态预处理器
(=命令行选型: --dynamic-preprocessor-lib)
dynamicpreprocessor file /usr/lib/snort_dynamicpreprocessor/libdynamicexample.so
3 从安装路径加载动态引擎
(=命令行选项:--dynamic-engine-lib)
dynamicengine /user/lib/snort_dynamicengine/libsf_engine.so
4 从安装路径加载所有动态规则库
(--dynamic-detection-lib-dir)
dynamicdetection directory /usr/lib/snort_dynamicrule/
5 加载指定动态规则库
(--dynamic-detection-lib)
dynamicdetection file
snort.conf分析(中文)
最新推荐文章于 2025-02-06 20:21:50 发布