在现在越来越庞大的网络面前,我们的企业网络网络为了实现相对来说的安全都会在企业网与internet之间架设防火墙。但是在有些情况下,防火墙并不能发挥作用。
如上图所示:
企业内网与外网以及服务器所在的DMZ区域
(1)来至于企业内网用户的攻击
(2)内网用户绕过防火墙上网受到攻击,进而是攻击者攻击内网
(3)攻击者通过病毒、木马.....实施攻击
这时候就需要用一些策略来实施监控,让我们在网络出现异常时及时发现,并实施补救措施。早期的IDS(入侵检测系统)就是用来进行监控的,后来发展到IPS(主动防御系统)进一步的可以再进行监控的同时,如果发现异常可以进行一些动作来阻断某些攻击。
IDS分类:
HIDS:软件类的,基于主机( 例如Sessionwall和我们今天要讲的snort)
安装到得保护的主机上边,但是考虑到成本的话,我们并不能为每台主机安装这种软件,这就需要把总要的服务器优先安装。
检测内容:(比较细致)
应用层的服务、网络流量、日志、用户行为、重要文件是否被改动
NIDS:硬件类的,基于网络
连接交换机,接收来至于交换机的额数据,不过为了能接收到交换机下的多个主机,应该使用到端口镜像技术,这就需要每台交换机上都部署NIDS。不过如果网络过于庞大的话这种方案成本也比较高。
这就有了后来的RSPAN(远程的交换端口分析),就可以检测到其他交换机的数据信息了。
检测内容:(不够细致)
只能检测到网络7层结构的第四层,像是应用层的服务、病毒.....都检测不到
鉴于此,在实际网络应用中常常两种防御系统结合来使用,在重要的服务器上使用HIDS,而其他主机使用NIDS。
IDS工作原理:
如果是IPS的话,进一步的还会对攻击行为做出阻断动作
开放源代码(Open Source)的入侵检测系统Snort,到现在为止,Snort已发展成为一个多平台(Multi-Platform),实时(Real-Time)流量分析,网络IP数据包(Pocket)记录等特性的强大的网络入侵检测/防御系统(Network Intrusion Detection/Prevention System),即NIDS/NIPS.Snort符合通用公共许可(GPL——GUN General Pubic License),snort基于libpcap。
Snort有三种工作模式:嗅探器、数据包记录器、网络入侵检测系统。嗅探器模式仅仅是从网络上读取数据包并作为连续不断的流显示在终端上。数据包记录器模式把数据包记录到硬盘上。网络入侵检测模式是最复杂的,而且是可配置的。我们可以让snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作。
Snort的部署非常灵活,很多操作系统上都可以运行,可以运行在window xp,windows2003,linux等操作系统上。不过考虑到操作系统平台的安全性、稳定性,同时还要考虑与其它应用程序的协同工作的要求。如果入侵检测系统本身都不稳定容易受到攻击,就不能很好的去检测其它安全攻击漏洞了。在Linux与Windows操作系统相比较之下,Linux更加健壮,安全和稳定。Snort的运行,主要是通过各插件协同工作才使其功能强大,所以在部署时选择合适的数据库,Web服务器,图形处理程序软件及版本也非常重要。Snort部署时一般是由传感器层、服务器层、管理员控制台层三层结构组成。传感器层层就是一个网络数据包的嗅探器层,收集网络数据包交给服务器层进行处理,管理员控制台层则主要是显示检测分析结果。部署Snort时可根据企业网络规模的大小,采用三层结构分别部署或采用三层结构集成在一台机器上进行部署,也可采用服务器层与控制台集成的两层结构。
基本指令:侦测模式
若你想要在萤幕上显示网路封包的标头档(header)内容,使用
./snort -v
如果想要在萤幕上显示正在传输的封包标头档内容,使用
./snort -vd
如果除了以上显示的内容之外,欲另外显示数据链路层(Data link layer)的资料的话,使用
./snort -vde
下面来通过实例来进一步了解snort
1、首先把需要的软件包传到linux主机,并安装
rpm -ivh snort-2.8.0.1-1.RH5.i386.rpm
2、测试
snort -vde -l ./ &>/dev/null & (监测信息不输送在屏幕上,并且在后台运行)
Ping该主机
查看本目录下已经存在该日志文件
读取日志需要指令才行
snort -r snort.log.1383150726 |less
Snort最重要的用途还是作为网络入侵检测
若欲使用入侵侦测模式,就得使用下面的指令
./snort -dev -l ./log -h 192.168.1.0/24 -c snort.conf
其中snort.conf是封包的签章档案,里边定义了扫描的规则、规则存放的目录.....
vim /etc/snort/snort.conf
但是一般情况下该目录下并没有入侵规则库,这时候需要我们去添加这些入侵规则库(需要注意的是入侵规则库的版本号要与snort的版本号相同)
tar -zxvf snortrules-snapshot-2.8.tar.gz -C /etc/snort/
再次查看就有了
3、结合php和mysql
安装需要的软件包
Libpcap(捕获数据包的函数库)、mysql(存放捕获的数据)、apache(web服务器)、php(网页脚本语言)、adobd(为php提供数据库支持)以及base(基本的分析和安全引擎)
把linux主机网络设置为能连接因特网
配置yum环境
vim /etc/yum.repos.d/rhel-debuginfo.repo
挂载光盘
安装需要的软件包
yum install php php-gd php-pear php-mysql mysql-server httpd libpcap -y
开启服务并设为开机启动
service httpd start
chkconfig httpd on
service mysqld start
chkconfig mysqld on
为mysql设置密码
mysqladmin -u root -p password '123'
为存放在数据库中捕获的数据建设数据库,并导入模板
4、由于pear的版本太低,需要在线升级一下
更新
pear upgrade pear
安装图形的模块
pear install Image_Graph-alpha Image_Canvas-alpha Image_Color Numbers_Roman Mail_Mime Mail
5、处理base(物理目录访问)
tar -zxvf base-1.4.5.tar.gz -C /var/www/html/
mv base-1.4.5/ base
cd /var/www/html
chmod o+w base
这样就能通过http://***/base直接访问了
6、处理adodb
unzip adodb514.zip
mv adodb5 /var/www/html/adodb
cd /var/www/html/base
拷贝图形图像工具
cp world_map6.png world_map6.txt /usr/share/pear/Image/Graph/Images/Maps/
7、访问
提示我们php日志级别太高,同时也给出了我们的解决办法
vim /etc/php.ini
重启apache
service httpd restart
再次访问
下一步
这时候出现了监控的画面,但是还没有数据,这是因为我们没有告诉它应该把截获的数据交给mysql数据库
8、安装snort和BASE连接的软件包
rpm -ivh snort-mysql-2.8.0.1-1.RH5.i386.rpm
声明把截获的数据交给mysql数据库
vim /etc/snort/snort.conf
设置为只记录那些警报级别(及以上级别)的信息
9、实施截获数据
snort -vde -c /etc/snort/snort.conf &>/dev/null &
再次访问
就看到有信息的记录,这样就能实现网络的实时监控了