snort是一种强大的网络入侵检测系统。其主要有三大功能,不过今天在centos系统里我们主要采用其入侵检测功能,即把snort作为入侵检测系统来采集告警日志,以备后续使用。
要是直接在centos主机上安装,倒也不那么麻烦,下载snort需要的依赖包和snort安装包,然后make&&make install;接着修改配置文件,调通虚拟机与外网和主机之间的互相访问;第三步是自己要写一两条alert规则,然后进行测试:用其他主机ping这台虚拟机,如果终端显示有日志,则说明没有问题。
一、wget源码安装、配置与使用方法
snort的安装有三种方式:
- yum源方式
- wget 下载链接方式
- 还有一种是docker打包好的snort
这三种方法我都试了。可行的是后两种。不过大部分人都喜欢用源代码的方式安装,方便以后学习研究代码,也可以自行调试snort,编写snort规则,测试snort功能。下面会一一介绍这两种方式的下载安装过程。
1.1 wget 下载链接方式
首先介绍wget 下载链接方式。手动下载需要敲很多行命令。
代码语言:shell复制sudo yum install -y gcc flex bison zlib libpcap pcre libdnet tcpdump
从源代码在 CentOS 上设置 Snort 包括几个步骤:下载代码、配置它、编译代码、将其安装到适当的目录,最后配置检测规则。
在开始之前,除了已经安装的先决条件之外,您还需要以下开发包。
代码语言:shell复制sudo yum install -y zlib-devel libpcap-devel pcre-devel libdnet-devel openssl-devel libnghttp2-devel luajit-devel
准备好后,在您的主目录中创建一个临时下载文件夹,然后使用以下命令更改为该文件夹。
代码语言:shell复制mkdir ~/snort_src && cd ~/snort_src
使用下面的 wget 命令从Snort网站下载最新的DAQ源包。如果有更新的源可用,请替换命令中的版本号。
代码语言:shell复制wget https://www.snort.org/downloads/snort/daq-2.0.6.tar.gz
解压daq的源码包,此时直接安装daq会有报错,缺少各种各样的依赖包,所以要先安装依赖包,于是先用以下命令安装libpcap。
代码语言:shell复制wget http://www.tcpdump.org/release/libpcap-1.7.4.tar.gz
然后对libpcap压缩包进行解压。之后再进到libpcap目录,对libpcap进行编译运行:
代码语言:shell复制 tar -xzvf libpcap-1.7.4.tar.gz
cd libpcap-1.7.4
./configure && make && sudo make install
然后继续回到daq的安装。
代码语言:shell复制cd ../daq-2.0.7
./configure && sudo make && sudo make install
二、docker安装
1.2 docker-snort安装
docker安装snort简单多了。首先是先在centos系统中输入docker命令,发现提示该command not found。
于是先安装docker。一行就完事儿:yum install docker
安装好以后,再执行docker pull linton/docker-snort
就安装好了。
启动snort前一定要先打开docker服务。
代码语言:shell复制systemctl start docker
然后启动snort docker:
代码语言:shell复制docker -it --rm --net-host linton/docker-snort /bin/bash
在启动snort时,要提前配置好snort的告警规则。snort的配置文件在/etc/snort/rules/local.rules,可以把想验证的规则放在该文件里,以给入侵检测系统提供规则。
三、添加规则
对于测试snort的入侵检测功能,添加下面这条规则到/etc/snort/rules/local.rules:
代码语言:shell复制alert icmp any any -> any any (msg:"Pinging...";sid:1000004;)
运行snort并将告警输出到屏幕上:
代码语言:shell复制$ snort -i eth0 -c /etc/snort/etc/snort.conf -A console
运行snort并将告警输出到UNIX socket:
代码语言:shell复制$ snort -i eth0 -A unsock -l /tmp -c /etc/snort/etc/snort.conf
Ping 容器然后警告消息将显示在控制台上:
Ping in the container then the alert message will show on the console
代码语言:shell复制ping 8.8.8.8
添加以上规则后,snort输出的告警日志格式为:
06/28-22:38:51.673951 ** ICMP ** {ICMP} 192.168.56.1 -> 192.168.56.103
四、开机自启动
前提是已经做了docker服务和容器随服务器开机而自启动。
容器开机自启动:--restart=always:创建容器时加入该选项即可实现容器开机启动。
将现有容器
参考资料
1.2 参考文档
1.2.1 环境部署搭建文档
https://blog.csdn.net/u013816144/article/details/53729153
https://www.cnblogs.com/zlslch/p/7306632.html
https://klionsec.github.io/2017/09/22/snortpentest/
1.2.2 规则编写文档
https://blog.csdn.net/qq_28210869/article/details/78886604
https://www.cnblogs.com/lasgalen/p/4512755.html
https://www.cnblogs.com/Lthis/p/4949766.html