好久没写博客了,今天终于把IPS的知识掌握完毕,所以将这些内容分析出来,感兴趣的同学请继续往下看。
本篇讲的内容会偏多,其中包括下面的几个方面:
1、IPS的基本原理
2、IPS的console的初始化
3、IPS的IDM基础使用
4、IPS的在线模式和杂合模式
5、IPS不同signature与多个VS的关联
6、IPS的signature的alerts(警告)和log action
7、IPS的signature deny action (拒绝动作)
8、IPS signature engine(引擎)介绍
9、IPS参数调整
10、IPS动作过滤
11、IPS的blocking
IPS(入侵防御系统),对于初始者来说,IPS位于防火墙和网络的设备之间。由于防火墙性能上的限制,通常不具备实时的监控入侵的能力,而IPS如果检测到攻击,IPS会在这种攻击扩散到网络的其它地方之前阻止这个恶意的通信。
而IDS(入侵检测系统),只是存在于你的网络之外起到报警的作用,而不是在你的网络前面起到防御的作用。换言之IDS只是启动检测到攻击,而不能及时的对其进行处理,当然我们这里说的可以处理,是配置IPS的联动,例如blocking,这里我们后面会提到。
IPS检测攻击的方法也与IDS不同。目前有很多种IPS系统,它们使用的技术都不相同。但是,一般来说,IPS系统都依靠对数据包的检测。IPS将检查入网的数据包,确定这种数据包的真正用途,然后决定是否允许这种数据包进入你的网络。
IDS和IPS系统有一些重要的区别。如果你要购买有效的安全设备,使用的是IPS而不是使用IDS,你的网络通常会更安全。但是安全和性能从来都是成反比的,所以我们建议在网络访问较少的,数据相对重要的布置IPS,访问较多的,数据相对不那么重要的布置IDS。
这里我们通过VMware的形式展示给大家看,将其镜像导入VMware,直接登录进去,开始配置,若是直接进入登录模式的,先登录进去后输入setup重新设置。
配置IPS名称
配置IPS网管接口(IP地址,默认网关),此接口有路由功能。只有默认路由到网关。
是否修改现在有的ACL。这个ACL是用于控制哪些源IP来进行网管IPS的地址。空配必须打YES。
允许某个网段。或某个主机地址。如果没有允许。将无法网管IPS,设置完后,按两下回车。进入下一步。
配置DNS服务器。在这里不配置。
配置HTTP代理服务器。
修改系统时间。
是否参与思科汇总统计。向思科发送信息。有点类似于。我们安装软件最后一步。参加什么云改善计划活动。
确认已配置信息
选择3。继续高级选项
开启telnet同能,默认关闭。但是可以使用SSH。
修改配置WEB服务的端口。默认使用443就行。
修改接配置。直接回车。一般在网管界面配置。
修改配置威胁检测。直接回车。一般在网管界面配置。
选择2保存配置。
物理主机需要求有网卡与我们上面配置IPS主机的同一网段地址。
测试是否能够ping通IPS管理地址,此时能ping通IPS。
并且开启了telnet后应该能正常telnet。
在本地浏览器上输入改管理地址:HTTPS://172.16.18.100.
点击run IDM。注意:需要提前安装好JAVA,版本为6的,过低或者过高都会有所影响。这里可自行百度下载。
安装。
勾选,点击信任。
输入IPS的用户名和密码。
进入到网关界面。Console初始化,结束。
则需点击浏览器的设置,Internet选项,高级,将其SSL3.0打勾。再将其添加到信任站点。
但是我们发现这里写的证书错误,所以我们需为其添加证书,点击“证书错误“查看证书
查看证书指纹是否和IPS一致
可以看出,为一致。
IDM的使用
第一个模块:configuration/sensor setup
Network :这里可修改IPS管理接口的地址掩码和网关,也可以配置相关http和DNS的地址,相当于我们配置命令setup之后的配置。
当你勾选激活密码恢复的时候,这里用做当密码忘记的时候可以直接修改为cisco且不会清除配置(具体操作在重启IPS时按2)。若是不勾选则可以重置密码,但是相对于的配置也清除掉(具体操作在重启IPS时按1)。具体如下操作,需注意做CRT关联时需创建串行接口,具体操作与做ASA的一致。
开机选项
0:正常开启IPS,密码使用设置密码ciscoips123
1:恢复出厂设定,相当于清空配置开机
2:清除密码开机,不清空配置。这里需要在IPS里面勾选Allow
Allowed hosts :
配置允许登录关联IPS的地址或者网段。如下面所示这里允许10网段访问管理IPS,则10网段内的主机都可以telnet和pingips的管理地址。若是将其删除掉,则无法完成上述操作。
Time :这里就是时间的设置了,可以手动设置或者是同步NTP时间,也可以启用夏令时。
Authentication :这里就是我们登录时的用户和密码认证了,可以创建四种不同的用户,权限也是各不相同,方便给不同的人群使用,让使用更加人性化。下面是四种用户的权限介绍:
administrator级别:可以实现全部查看和操作,跟默认cisco设置一样,所以这里不演示。
Operato级别:可以修改策略,查看监控事件,但是无法修改网络配置信息,无法添加删除用户,简单的说就是可以查看网络相关信息,可配置,不可修改与管理相关的参数。
Viewer级别:只能查看IPS配置信息和事件,不能修改。
Service级别:不能通过IDM登陆,只能通过telnet登录,使用这个用户登陆之后显示的是改IPS的Linux底层,一般不登录,除非需修改底层配置。
上面搭建好了IPS的IDM管理,接下来就是介绍如何去使用了,下面我们先介绍IPS的在线模式和杂合模式。我们直接以实验的模式介绍。
需求:如图所示,R1与R2分别处于不同的vlan,在IPS配置相关设置,使得R1可以ping通R2,且流量可以被检测到。具体连接如下:
IPS管理接口不出现在拓扑上。
R1 F0/0-SW F1/0
R2 F0/0-SW F1/1
IPS G0/0-SW F1/3
IPS G0/1-SW F/4
配置如下
R1:
R1(config)#interface f0/0
R1(config-if)#ip add 10.1.1.10 255.255.255.0
R1(config-if)#no sh
R2:
R2(config)#interface f0/0
R2(config-if)#ip add 10.1.1.20 255.255.255.0
R2(config-if)#no sh
SW:
SW(config)#vlan 2
SW(config)#vlan 3
SW(config)#interface range f1/0 , f1/3
SW(config-if-range)#switchport mode access
SW(config-if-range)#switchport access vlan 2
SW(config)#interface range f1/1 , f1/4
SW(config-if-range)#switchport mode access
SW(config-if-range)#switchport access vlan 3
此时R1pingR2不通。
所以需配置IPS,通过IDM进行图形界面配置。
IPS:
1、将g0、g1口enable打开,再点击apply。
绑定接口,add一个名为R1-R2的,将G0/1 ,G0/0绑定上去。点击OK生效,最后点击apply。
配置完成之后,让R1pingR2.查看效果。
到此初始化完毕。
下面配置检测流量的查看。
右键vs0,点击edit,将R1-R2添加上去。点击OK,最后点击apply。
在all signatures 上搜索2000和2004(作为检测icmp的标签),将其打勾enable,将retired状态修改为no(修改方法为右键,change status to active )
上述配置完成之后,让R1pingR2,点击下面的View,查看配置。
到此,检测到数据流通过。
基础IP配置:R1(10.1.1.10),R2(10.1.1.20),将F1/1与发1/2划到vlan 10。R3模拟交换机,添加交换机模块。C1作为桥接,桥接IPS的g0/0口。
配置:
1配置SPAN :
SW(config)#monitor session 1 source interface f1/1 wr
SW(config)#monitor session 1 destination int f1/0
2在IME进行图像化操作,具体操作于上面的IPS一致,这里不再介绍。两者的区别就是在于部署的位置和作用不一致。
需求:如图所示,R1与R2和IPS做在线模式,设置使得R1pingR2的数据包被拒绝,R1pingR2失败,但是可以被检测数据包。
R3与R4做杂合模式,设置使得R3pingR4的数据包可以被通过,R3pingR4通过,且数据包可以被检测。
配置如下:
IP地址配置省略。
在线模式配置:
配置前查看R1pingR2,成功ping通。
绑定接口G0/1与G1/1为R1-R2
将绑定后的接口关联到VS中。
启动signature,并且将ICMP的数据包deny。
配置完成,查看R1pingR2。
很明显ping失败 ,查看view是否有数据包检测到。
结果检测到,符合需求。
透明模式配置:
配置前查看R3pingR4,成功ping通。
端口镜像技术配置
SW(config)#monitor session 1 source interface f1/1
SW(config)#monitor session 1 destination interface f1/0
新建一个signature
配置完成查看R3pingR4。
一样成功ping,不会被前面的VS所影响,说明不同的VS之间互不影响。
再来查看view
一样成功检测到,符合需求。
Signature actions(alerts and log)
Produce alert
这是正常的检测icmp包
Prduce verbose alert :多了部分的描述数据包
Log attacker packets :以第一个数据包的源地址为依据,只检测到改源地址发送的数据包,其他的不检测。
如上面的地址为例 ,我们为R1添加环回地址1.1.1.1, 先让10.1.1.10pingR2,再让接口和环回口分别telnetR2,从IDM的IP logging界面下载数据包,用wires hark打开,结果我们可以发现,确实只有第一个数据包源地址,即10.1.1.10的数据包。
Log victim packets :以第一个数据包的目的地址为依据,只检测到改目的地址发送的数据包,其他的不检测。
如上面的地址为例 ,我们为R1添加环回地址1.1.1.1, 先让10.1.1.10pingR2,再让接口和环回口分别telnetR2,从IDM的IP logging界面下载数据包,用wires hark打开,结果我们可以发现,由于两个地址目的是一样的,所以都能够检测到数据包,即10.1.1.10和1.1.1.1的数据包。
Log pair packets :以第一个数据包的源和目的地址为依据,只检测到该源和目的地址发送的数据包,其他的不检测。
如上面的地址为例 ,我们为R1添加环回地址1.1.1.1,先让10.1.1.10pingR2,再让接口和环回口分别telnetR2,从IDM的IP logging界面下载数据包,用wires hark打开,结果我们可以发现,只有源地址和目的地址和第一个数据包一致的才可以被检测到。
作为signature的警告内容,一般有下面几种形式的选择,选择不同的警告,在view检测到的数据内内容也就不一致。
Produce alert (发出警告)
这是正常的检测icmp包
Prduce verbose alert :冗长警告,多了部分的描述数据包
Log attacker packets (记录攻击者数据包):以第一个数据包的源地址为依据,只检测到改源地址发送的数据包,其他的不检测。
如上面的地址为例 ,我们为R1添加环回地址1.1.1.1, 先让10.1.1.10pingR2,再让接口和环回口分别telnetR2,从IDM的IP logging界面下载数据包,用wires hark打开,结果我们可以发现,确实只有第一个数据包源地址,即10.1.1.10的数据包。
Log victim packets (记录受害者数据包):以第一个数据包的目的地址为依据,只检测到改目的地址发送的数据包,其他的不检测。
如上面的地址为例(上面VS关联的实验) ,我们为R1添加环回地址1.1.1.1, 先让10.1.1.10pingR2,再让接口和环回口分别telnetR2,从IDM的IP logging界面下载数据包,用wires hark打开,结果我们可以发现,由于两个地址目的是一样的,所以都能够检测到数据包,即10.1.1.10和1.1.1.1的数据包。
Log pair packets(日志对数据包) :以第一个数据包的源和目的地址为依据,只检测到该源和目的地址发送的数据包,其他的不检测。
如上面的地址为例 ,我们为R1添加环回地址1.1.1.1,先让10.1.1.10pingR2,再让接口和环回口分别telnetR2,从IDM的IP logging界面下载数据包,用wires hark打开,结果我们可以发现,只有源地址和目的地址和第一个数据包一致的才可以被检测到。
用来对检测到的数据包进行动作处理,可以说这是IPS的主要关键功能。若是没有勾选下面的动作,默认IPS是对数据包不做处理的。
4、deny attacker service pair inline (内联拒绝攻击者服务对)
精确匹配源IP和目的固定端口,匹配则丢包,由首包触发。
如图下,先创建一个60000的TCP类型策略,目的端口匹配23。
接着我们用首包telnet去触发流量,发现telnet不通,然后我们用不同的目的端口去telnet,发现是可以通信的。原因就是首包触发策略,则该策略限制了该源目的端口和源IP地址,匹配中的流量将会被其丢包。而80没有匹配中,故而不会丢包。
若是想测试一下不同的源地址,那么不能直接去telnet,因为你直接去telnet他是会触发流量的,所以我们可以在触发策略的设置里添加一个目的地址,这样使用新的源地址去telnet就不会触发,便可以验证上述的deny attacker service pair inline规则。
如下图所示,添加一个触发的目的地址,这样我们让环回口1.1.1.1 telnet 2.2.2.2,就不会触发策略。
这样触发的源地址依旧是10.1.1.10,目的端口23,那么我们直接telnet 2.2.2.2 就失败了,而telnet 2.2.2.2 /source-interface loopback 0 就成功了,源地址发送变化,不匹配中触发流量,故而不会丢包。
5、deny attacker inline(拒绝攻击者内联)
精确匹配源IP,匹配则丢包,由首包触发。
一样也要注意一个触发问题,免得出现多个触发流量问题。使得验证不太严谨。
Atomic ip引擎之TCP三次握手的具体分析
配置完成后分别让
10.1.1.10telnet10.1.1.20
10.1.1.10telnet2.2.2.2
可以发现,除了我们策略上设置的1.1.1.1到2.2.2.2的流量,其他的是可以通过的。
我们再来抓包查看一下。
R1接口
R2接口
可以看出,R1是发送出了SYN包,通过IPS后,IPS发送ret数据包直接让R2重置连接了。直接将SYN包deny掉了。
第二个包:(SYN+ACK)
策略:这里区别于第一个包的是源目的地址取消掉了,因为TCP三次握手的第二个包是从R2到R1的。而我们第一个包设置的从R1到R2的,如果不取消掉的话,则策略是无效的。
这里我们可以发现,无论是telnet哪个地址都无法telnet成功了。再来抓包查看
我们可以发现,R1确实是发送给了R2 SYN报文,R2也确实发出了SYN+ACK报文,但是进过了IPS,IPS直接发送给R1RET+ACK报文,使得R1连接重置。区别于第一个包的连接这里重置连接是迅速的,而第一个包还得等待一会。
第三个数据包(ACK)
IPS策略设置:
可以发现,此时连接处于半开连接状态
需要断开连接出来,不然一直处于半开连接,无法操作。
可以发现前两个数据包没有问题,到了第三个数据包ACK,从R1发送出去,也是没问题的,但是进过IPS的时候被deny掉了,所有我们他会发送给R2一个RST+ack的重置包,但是此时R1并不知晓,仍处于半开连接状态。
Flood engine
Flood host配置实例:
策略设置:
对2152策略进行修改,将rate的值由100改为10,方便测试。
设置匹配的数据包将其丢弃。
结果发现依旧可以ping,不会丢包。原因就是正常ping的话是发送5个数据包的,这里小于我们设置的10个数据包,所以不触发策略。
再将其一次性ping的数据包改为20个,ping 10.1.1.20 repeat 20。
结果我们可以发现,当发第十个数据包的时候,就会丢包了。原因就是触发到了我们设置的策略了,所以发生丢包现象。该技术可以有效的防止互联网上的防洪攻击,当设备一次性收到大量的访问攻击时,可以将其数据包丢弃掉,从而不会占设备的资源。
创建一个新的service http 引擎,设置正则表达式触发条件。即当url出现了configur,则数据包丢失。
可以看到,当url出现configure还是能够访问了。
url不带configure访问正常。如果带上configure则就丢包,网页也就卡住了。
查看view明显也是检测到,被丢包了。
string engine
IDM策略配置:创建新的策略,采用的是string tcp引擎,开放端口23,编写正则表达式s h .*r.*u.*n,使得当R1telnetR2时,无法通过show run 来查看端口的地址,只要出现sh run 则会直接断开TCP连接。
正则表达式
分析,.*就是任意字符出现多次或者没出现,都匹配。那么既然会在sh与run之间和run之间做干扰,则我们思考将其干扰清除则可匹配。所以下面的表示式则适用。
s h .*r.*u.*n
输入show run断开连接。
Signature参数介绍
Signature ID ID号
Alert severity 告警级别
Sig Fidelity rating 准确度,影响风险
Promiscuous delta 杂合帧量
Event counter :决定了多少个事件产生多少个告警。
告警默认汇总:常见为ping5个包告警一条。具体设置在fire wall ,下面这里将模式由默认的summarize(汇总)改为fire wall。
结果我们可以看到,当R1pingR2时,会检测到ping的五个数据包,默认的话是一个汇总的。
修改默认的1改为10。
结果我们发现,当我们第一次ping的时候,检测不到数据包。
而第二次ping的时候才会检测到数据包,原因就是这里设置的是10个数据包才能产生告警,第一次ping的时候才5个数据包,不能够触发策略,第二次ping有十个包了才能够触发策略,故而产生告警信息。
而两次ping之间的时间计时器则在下面这里设置,可以通过修改该值来设置特定时间内发生多少事件才产生告警。
而event count key 这里就可以设定触发事件是源和目的地址还是其他的设置,默认的就是attacker and victim address (即源和目的地址)也就是说需同一个源目的IP地址才能够触发上述我们设定的10个策略。不然若是不同的IP地址,超出十个数据包也无效。像下面这里我们发了15个数据包才能够产生告警,就是这个原理。
Summary threshold :当数据包到达设置的程度,则开启汇总,这里是当15分钟内数据包超过120个,则就开启汇总,也就是说,第121包开始都是属于汇总的。即summarize。这里与下面的summary key相照应。
Global summary threshold :这里区分与上面的是全局汇总,当数据包超过240个则后面的数据包自动汇总。
Summarize :自动汇总,默认情况下30秒内的数据包汇总
Fire one : 只产生一个警告。无论多少个数据包,短时间内只能产生一个警告。
实验分析:
首先先配置策略。
分别用atomic IP的79号端口的第一个syn包和string IP的23号端口触发策略,动作采用冗长告警和源地址log。
配置完成,开启路由器的finge功能
Server finger
触发配置策略
两个策略都检测到,且有冗长告警。
下面我们通过IPS的动作过滤,将冗长告警给过滤掉。
配置如下
这里可以设置源目的地址和端口,未来方便,我们这里设置目的端口为79的滤掉冗长告警。即所有的数据包都过滤掉冗长告警。
可以发现,端口为79的冗长告警消失了。这里是被过滤掉了,所以不再显示。而23的还是有的。
在开始介绍IPS的blocking功能之前,我们先介绍一下什么是blocking。blocking是一种IPS设备与其它网络设备进行联动比如思科的路由器、多业务集成交换机、防火墙等(上述图片介绍),在这种情况下思科的IPS设备可以命令其它的网络设备对攻击流量进行拦阻,当IPS处于杂合模式时,这种联动其它网络设备对攻击流量进行拦阻的行为非常有用。相反,如果IPS设备处于在线模式下,blocking的特性还没有那么明显,因为当IPS处于在线模式时,设备本身就可以拦阻很多违规流量。
Blocking技术分为基于会话的blocking(connection)和基于主机的blocking(host),基于会话的blocking是过滤有明确目标地址和源地址的blocking,而基于主机的blocking是源地址是一个具有的明确的IP地址,而目标地址永远都是any的访问控制列表。一般情况下,如果要拦阻多个来自同一攻击源的blocking将使用基于主机的blocking技术,如果要拦阻不同攻击源,那么将使用基于会话的blocking。
注意:如果多个基于Connection(会话连接)的blocking都是使用相同的源地址即便是目标IP和端口不同,那么,在检测到这个会话三次后,这个基于Connection的blocking会自动转换成基于host的blocking。
决定适当的block时间
默认block的时间是半个小时,也就是说IPS在路由器或者其它设备上所写入ACL的时间为30分钟,当30分钟后,IPS会在路由器或者其它设备上将原先写入的ACL动态的删除,那么用户可以根据自身网络的特性调整blocking的时间。
需求:如图所示,outside路由器telnet到inside路由器,输入cheng关键字就触发告警,IDS通过telnet登录到ASA执行block connection。
配置环境:ASA防火墙、IPS(杂合模式)各一台。路由器两台,交换机一台。
配置过程:
1、三层交换机配好SPAN
monitor session 1 source interface Fa1/1
monitor session 1 destination interface Fa1/0
2、配置好IP地址和对应的路由,放行IDS telnet和R2telnet的流量
access-list out extended permit tcp host 10.1.1.10 host 192.168.150.10 eq 23
access-list out extended permit tcp host 10.1.1.100 host 192.168.150.10 eq 23
3、配置inside的telnet登录
line vty 0 4
password cisco
login local
username ccie password 0 cisco //创建登录的用户和密码
4、IDM配置
创建signature,正则表达式写关键字cheng,用于当目标敲cheng时触发signature。
动作使用blocking connection
在此板块依次输入登录的用户和密码以及enable密码。
抢两个板块是登录上去,会默认的写上两条默认的access-list,所以这个板块就是将其调用在接口上,这里我们写Fa0/0,支持缩写。
将其全部应用,之后来查看inside路由器(R1),可以看到,此时IPS已经登录到路由器写上默认的access-list。
下面我们将触发signature,R2telnetR1,敲上cheng关键字。触发成功后再来telnet,可以发现,此时登录失败。
此时来查看R1的access-list,可以发现,IDS在路由器写上了拒绝R2的路由访问。
协作blocking到此完成。
到此,IPS的内容讲述完毕,涉及的点有很多,当然也有没讲到的点,感兴趣的同学可以留言讨论。谢谢观看!