Snort初探

概念:

  Snort是一款开源的网络入侵防御系统(IPS),可以实时分析和记录网络数据包,你可以通过执行协议分析、内容搜索和匹配,从而发现各种网络攻击和可疑的探测。例如,缓冲区溢出、端口扫描、CGI攻击、SMB探测等。

安装:

OS version:CentOS 6.5

DAQ version:2.0.6

Snort version:2.9.8.0

依赖包:

gcc、flex、bison、zlib、libpcap、pcre、libdnet、tcpdump

libnetfilter_queue(IPS支持) --> libmnl、libnfnetlink

以上建议使用yum安装,若出现版本问题,再通过编译源码安装,

本文大部分使用源码编译,源码包可自行到网上下载,也可通过本文最后给的Github地址下载本文所使用的所有源码包。

依赖包安装:

yum -y install gcc flex bison zlib pcre tcpdump

安装libpcap

tar -zxf libpcap-1.7.4.tar.gz

cd libpcap-1.7.4

./configure --prefix=/usr/local --libdir=/usr/local/lib64

make && make install

PS:若不是安装在/ 或者 /usr 底下 需要在/etc/ld.so.conf.d/local.conf中加入安装的lib路径, 文件不存在可自行创建 使用ldconfig使配置生效

ldconfig -p | grep NAME   可以查看是否能找到该动态库

安装libdnet

tar -zxf libdnet-1.12.tgz

cd libdnet-1.12

./configure "CFLAGS=-fPIC -g -O2" --prefix=/usr --libdir=/usr/lib64

make && make install

安装DAQ:

若要支持IPS(入侵防御系统),安装DAQ前需安装libnetfilter_queue ,libnetfilter_queue需要libmnl、libnfnetlink 支持。

安装libmnl

tar -jxf libmnl-1.0.3.tar.bz2

cd libmnl-1.0.3

./configure --prefix=/usr --libdir=/usr/lib64

make && make install

安装libnfnetlink

tar -jxf libnfnetlink-1.0.1.tar.bz2

cd libnfnetlink-1.0.1

./configure --prefix=/usr --libdir=/usr/lib64

make && make install

安装libnetfilter_queue

tar -jxf libnetfilter_queue-1.0.2.tar.bz2

cd libnetfilter_queue-1.0.2

./configure --prefix=/usr --libdir=/usr/lib64

make && make install

安装daq

tar -zxf daq-2.0.6.tar.gz

cd daq-2.0.6

./configure --prefix=/usr/local --libdir=/usr/local/lib64

PS:需确保NFQ module已enabled:Build NFQ DAQ module....... : yes,否则修改/usr/include/libnetfilter_queue/linux_nfnetlink_queue.h,

#include <libnfnetlink/linux_nfnetlink.h>改成#include <libnfnetlink/libnfnetlink.h>

然后再重新configure一次。

make && make

安装Snort

tar -zxf snort-2.9.8.0.tar.gz

cd snort-2.9.8.0

./configure --prefix=/usr/local/snort

make && make install

至此,snort就安装完成了,可运行/usr/local/snort/bin/snort 查看snort能否正常工作。

启动配置:

创建snort用户

useradd snort

创建日志目录

mkdir /var/log/snort

启动脚本可以在官方网站中下载,根据自己的系统进行选择。

将启动脚本snortd拷贝到/etc/init.d/中

cp /path/to/snortd /etc/init.d/

另外,需要在 /etc/sysconfig/中创建一个snort的文件

touch /etc/sysconfig/snort

添加以下内容:

 # /etc/sysconfig/snort
# $Id: snort.sysconfig,v 1.8 2003/09/19 05:18:12 dwittenb Exp $
#### General Configuration
INTERFACE="eth0:eth1" //指定接入网口
USER="snort" //指定用户
GROUP="snort"       //指定用户组
#### Logging & Alerting
SNORT_OPTIONS="-A fast -b -Q --daq nfq --daq-mode inline --daq-var queue=8" //启动相关指令

rule配置:

从官网下载最新版本的rule文件

在/etc/中创建snort文件夹

mkdir /etc/snort

在rule文件解压到该文件夹中

tar -zxf snortrules-snapshot-2976.tar.gz -C /etc/snort

更改/etc/snort/etc/snort.conf

 # path to dynamic preprocessor libraries
dynamicpreprocessor directory /usr/local/snort/lib/snort_dynamicpreprocessor/ //指定到snort的lib目录中 # path to base preprocessor engine
dynamicengine /usr/local/snort/lib/snort_dynamicengine/libsf_engine.so //指定到snort的lib目录中 # path to dynamic rules libraries
dynamicdetection directory /etc/snort/so_rules/precompiled/RHEL-6-0/x86-64/2.9.7.6 //指定到so_rules中的具体系统的目录

touch /etc/snort/rules/black_list.rules /etc/snort/rules/white_list.rules

本文中使用的启动脚本有做过改动,用于支持IPS。

snortd文件如下:

 #!/bin/sh
#
# snortd Start/Stop the snort IDS daemon.
#
# chkconfig: 2345 40 60
# description: snort is a lightweight network intrusion detection tool that
# currently detects more than 1100 host and network
# vulnerabilities, portscans, backdoors, and more.
#
# June 10, 2000 -- Dave Wreski <dave@linuxsecurity.com>
# - initial version
#
# July 08, 2000 Dave Wreski <dave@guardiandigital.com>
# - added snort user/group
# - support for 1.6.2
# July 31, 2000 Wim Vandersmissen <wim@bofh.st>
# - added chroot support # Source function library.
. /etc/rc.d/init.d/functions # source the interface to listen on
. /etc/sysconfig/snort # See how we were called.
case "$1" in
start)
echo -n "Starting snort: "
if [ -f /var/lock/subsys/snort ];then
status snort
else
cd /var/log/snort
daemon /usr/local/snort/bin/snort -D $SNORT_OPTIONS \
-c /etc/snort/etc/snort.conf
touch /var/lock/subsys/snort
fi
# for NFQ mode
/sbin/iptables -t raw -nL | grep "NFQUEUE" 2>&1 >/dev/null
RETV=$?
if [ $RETV != 0 ];then
/sbin/iptables -t raw -A PREROUTING -p tcp -m multiport --dports 8080 -j NFQUEUE --queue-num 8 //将通过该端口的数据导入NFQ列表供snort检测
#/sbin/iptables -t raw -A PREROUTING -p udp -j NFQUEUE --queue-num 8
else
exit $RETV
fi
echo
;;
stop)
echo -n "Stopping snort: "
# for NFQ mode
/sbin/iptables -t raw -D PREROUTING -p tcp -m multiport --dports 8080 -j NFQUEUE --queue-num 8
#/sbin/iptables -t raw -D PREROUTING -p udp -j NFQUEUE --queue-num 8
killproc snort
rm -f /var/lock/subsys/snort
echo
;;
restart)
$0 stop
$0 start
;;
status)
status snort
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac exit 0

启动snort

chmod a+x /etc/init.d/snortd

/etc/init.d/snortd start

启动正常后,若有可疑攻击,可在/var/log/snort/alter文件中查看到被拒绝的规则信息。

Snort简易安装脚本和源码包:https://github.com/Code-CC/Security/tree/master/snort

参考:

https://www.snort.org/documents

https://s3.amazonaws.com/snort-org-site/production/document_files/files/000/000/023/original/ids2ips.txt?AWSAccessKeyId=AKIAIXACIED2SPMSC7GA&Expires=1449938392&Signature=T27xIDifF9HvCxORWyltW5Ey7pA%3D

Snort初探的更多相关文章

  1. OSSEC初探

    OSSEC初探 概念: OSSEC是一款开源的基于主机的入侵检测系统(HIDS),它可以执行日志分析.完整性检验.windows注册表监控.隐匿性检测和实时告警.它可以运行在各种不同的操作系统上,包括 ...

  2. 初探领域驱动设计(2)Repository在DDD中的应用

    概述 上一篇我们算是粗略的介绍了一下DDD,我们提到了实体.值类型和领域服务,也稍微讲到了DDD中的分层结构.但这只能算是一个很简单的介绍,并且我们在上篇的末尾还留下了一些问题,其中大家讨论比较多的, ...

  3. CSharpGL(8)使用3D纹理渲染体数据 (Volume Rendering) 初探

    CSharpGL(8)使用3D纹理渲染体数据 (Volume Rendering) 初探 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharpGL源码 ...

  4. 从273二手车的M站点初探js模块化编程

    前言 这几天在看273M站点时被他们的页面交互方式所吸引,他们的首页是采用三次加载+分页的方式.也就说分为大分页和小分页两种交互.大分页就是通过分页按钮来操作,小分页是通过下拉(向下滑动)时异步加载数 ...

  5. JavaScript学习(一) —— 环境搭建与JavaScript初探

    1.开发环境搭建 本系列教程的开发工具,我们采用HBuilder. 可以去网上下载最新的版本,然后解压一下就能直接用了.学习JavaScript,环境搭建是非常简单的,或者说,只要你有一个浏览器,一个 ...

  6. .NET文件并发与RabbitMQ(初探RabbitMQ)

    本文版权归博客园和作者吴双本人共同所有.欢迎转载,转载和爬虫请注明原文地址:http://www.cnblogs.com/tdws/p/5860668.html 想必MQ这两个字母对于各位前辈们和老司 ...

  7. React Native初探

    前言 很久之前就想研究React Native了,但是一直没有落地的机会,我一直认为一个技术要有落地的场景才有研究的意义,刚好最近迎来了新的APP,在可控的范围内,我们可以在上面做任何想做的事情. P ...

  8. 【手把手教你全文检索】Apache Lucene初探

    PS: 苦学一周全文检索,由原来的搜索小白,到初次涉猎,感觉每门技术都博大精深,其中精髓亦是不可一日而语.那小博猪就简单介绍一下这一周的学习历程,仅供各位程序猿们参考,这其中不涉及任何私密话题,因此也 ...

  9. Key/Value之王Memcached初探:三、Memcached解决Session的分布式存储场景的应用

    一.高可用的Session服务器场景简介 1.1 应用服务器的无状态特性 应用层服务器(这里一般指Web服务器)处理网站应用的业务逻辑,应用的一个最显著的特点是:应用的无状态性. PS:提到无状态特性 ...

随机推荐

  1. IO(文件)处理

    一.文件操作 1)介绍: 计算机系统分为:计算机硬件,操作系统,应用程序三部分. 我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件, ...

  2. C/C++中peek函数的原理及应用

    C++中的peek函数 该调用形式为cin.peek() 其返回值是一个char型的字符,其返回值是指针指向的当前字符,但它只是观测,指针仍停留在当前位置,并不后移.如果要访问的字符是文件结束符,则函 ...

  3. Eclipse安装JD-Eclipse反编译插件成功看源码

    Eclipse安装JD-Eclipse反编译插件 转载 2017年12月24日 15:19:27   http://heavengate.blog.163.com/blog/static/202381 ...

  4. 98、vue.js简单入门

    本篇导航: 介绍与安装 vue常用指令 一.介绍与安装 vue是一套构建用户界面的JAVASCRIPT框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层, ...

  5. Robots.txt - 禁止爬虫

    robots.txt用于禁止网络爬虫访问网站指定目录.robots.txt的格式采用面向行的语法:空行.注释行(以#打头).规则行.规则行的格式为:Field: value.常见的规则行:User-A ...

  6. 基于VUE的九宫格抽奖功能

    HTML代码: <template> <div class="luckDraw"> <title-bar :title="title&quo ...

  7. C#进行CAD二次开发环境配置

    最近被公司分配到了做CAD二次开发.也是初次接触这方面的东西,其实是有些无从下手的感觉.因为公司这边也没有人有时间带我,只能是自己看书,然后再写一些Demo,再结合实际的应用来一点点的学习.废话不多说 ...

  8. hive下UDF函数的使用

    1.编写函数 [java] view plaincopyprint?package com.example.hive.udf;    import org.apache.hadoop.hive.ql. ...

  9. 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](七)

    前言 大家好,我依旧是你们的老朋友Rector,很高兴又在周五的时候准时和大家见面. Rector的系列文章[一步一步创建ASP.NET MVC5程序[Repository+Autofac+Autom ...

  10. Linux pmstat命令

      mpstat是linux一款实时系统监控工具.其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中.在多CPU系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU ...