概述
在1998年,Marty Roesch先生用C语言开发了开放源代码(Open Source)的入侵检测系统Snort.直至今天,Snort已发展成为一个多平台(Multi-Platform),实时(Real-Time)流量分析,网络IP数据包(Pocket)记录等特性的强大的网络入侵检测/防御系统(NetworkIntrusion Detection/Prevention System),即NIDS/NIPS。
安装
基于windwos
-
同意安装许可
-
选择所需安装的snort组件
Snort:snort主程序
Dynamic Modules:snort所需的动态模块
Documentation:snort相关说明文档
- 选择安装路径(Windows默认安装路径在C盘下)
- 等待片刻即可安装成功
- 切换到snort安装目录的bin目录下,使用-V参数显示snort版本,测试snort是否安装成功
基于ubuntu
-
ubuntu 14.04 (命令安装)
$ sudo apt-get update $ sudo apt-get install snort $ sudo -V
-
ubuntu14.04 (源码安装)
# snort依赖环境安装 $ sudo apt-get update $ sudo apt-get install -y build-essential $ sudo apt-get install -y libpcap-dev libpcre3-dev libdumbnet-dev $ sudo apt-get install -y bison flex $ sudo mkdir ~/snort_src $ cd ~/snort_src $ sudo wget https://snort.org/downloads/snort/daq-2.0.6.tar.gz $ sudo tar -xvzf daq-2.0.6.tar.gz $ cd daq-2.0.6 $ ./configure $ make $ sudo make install $ sudo apt-get install -y zlib1g-dev $ sudo apt-get install -y liblzma-dev $ sudo apt-get install -y openssl libssl-dev $ sudo apt-get install -y autoconf libtool pkg-config $ cd ~/snort_src $ sudo wget https://github.com/nghttp2/nghttp2/releases/download/v1.17.0/nghttp2-1.17.0.tar.gz $ sudo tar -xzvf nghttp2-1.17.0.tar.gz $ cd nghttp2-1.17.0 $ autoreconf -i --force $ automake $ autoconf $ sudo ./configure --enable-lib-only $ sudo make $ sudo make install # 编译安装snort $ sudo wget https://www.snort.org/downloads/snort/snort-2.9.12.tar.gz $ sudo tar -zxvf snort-2.9.12.tar.gz -C /opt/ $ cd /opt/snort-2.9.12/ $ sudo ./configure --enable-sourcefire $ sudo make $ sudo make install $ snort -V
-
安装过程中的问题
ERROR! LuaJIT library not found. Go get it from http://www.luajit.org/ (or) Try compiling without openAppId using '--disable-open-appid' configure: error: "Fatal!"
原因:缺少luaJIT库,可以到官网下载,编译安装即可。
$ sudo wget http://luajit.org/download/LuaJIT-2.0.5.tar.gz $ sudo tar -zxvf LuaJIT-2.0.5.tar.gz $cd LuaJIT-2.0.5/ $ sudo make && sudo make install
基础知识
snort工作模式
Snort有三种工作模式:嗅探器、数据包记录器、网络入侵检测系统。
-
嗅探器模式仅仅是从网络上读取数据包并作为连续不断的流显示在终端上。
常用命令:
$ sudo snort -v # 把TCP/IP包头信息打印在屏幕上 $ sudo snort -vd # 把应用层的数据打印在屏幕上 $ sudo snort -vde # 显示数据链路层的信息
-
数据包记录器模式把数据包记录到硬盘上。
常用命令:
$ sudo snort -dev -l /var/log/snort/ $ sudo snort -dev -l /var/log/snort/ -h 192.168.1.0/24 $ sudo snort -l ./var/log/snort/ -b $ sudo snort -dv -r packet.log $ snort -dvr packet.log icmp
-
网路入侵检测模式是最复杂的,而且是可配置的。我们可以让snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作。
常用命令:
$ sudo snort -dev -l ./log -h 192.168.1.0/24 -c snort.conf
$ sudo snort -d -h 192.168.1.0/24 -l ./log -c snort.conf
snort报警机制
snort有6种报警机制:full、fast、socket、syslog、smb(winpopup)和none。其中有4个可以在命令行状态下使用-A选项设置。这4个是:
-A fast # 报警信息包括:一个时间戳(timestamp)、报警消息、源/目的IP地址和端口。
-A full # 是默认的报警模式。
-A unsock # 把报警发送到一个UNIX套接字,需要有一个程序进行监听,这样可以实现实报警。
-A none # 关闭报警机制。
使用-s选项可以使snort把报警消息发送到syslog,默认的设备是LOG_AUTHPRIV和LOG_ALERT。可以修改snort.conf文件修改其配置。
snort还可以使用SMB报警机制,通过SAMBA把报警消息发送到Windows主机。为了使用这个报警机制,在运行./configure脚本时,必须使用--enable-smbalerts选项。
下面是一些输出配置的例子:
# 使用默认的日志方式(以解码的ASCII格式)并且把报警发给syslog
$ sudo snort -c snort.conf -l ./log -s -h 192.168.1.0/24
# 使用二进制日志格式和SMB报警机制
$ sudo snort -c snort.conf -b -M WORKSTATIONS