第三天2.advanced_protocol_handling

深秋、 / 2024-08-12 / 原文

先进协议处理

有些协议会动态协商一些第二信道,如ftp,完全是动态协商源目ip,源目端口号。高于网络层的协商,应用层的协商,防火墙要知道他们在干什么,让他能够进来,能够工作。

instances

1.正常工作,让一些协议正常的工作,例如ftp,语音协议,

2.安全保护

ftp两种模式

active

passive

第一信道client连接server.目的端口21.当我们要下载文件的时候,它会建立第二个信道,真正传输数据是在第二个信道来完成的,而不是在第一个信道,第一个信道用来认证一下用户,还可以再第一信道看看服务器上游什么文件,当下载的时候就是第二信道,第二信道是真正传输数据来用的,对于服务器而言他是主动发起的还是被动接收的,如果第二信道对服务器而闫妮踏实主动发起的,那就是active,第二信道如果服务器是被动接收的那就是passive。第二信道如何协商,让你使用get会有应用层的数据发送出去,叫做port 1,2,3,4,5,6发给server,前面1234是client的ip地址,5和6,5*256+6为端口号,它会告诉server,主动你来连我的5*256+6号端口号,服务器的端口号为20,ip为1,2,3,4,client第一个端口是随即的大于1024的端口号。

如果防火墙根本就不知道在干什么,在第二信道是由outside主动发起的,根本就不会通过,这个时候防火墙就要知道你是ftp,知道是在协商,使这个port命令能够过去,它也给你算出来,它就给你把第二信道的口打开了,等着你回来。这样第二信道就能正常共走。

passive当client和server连的时候会发一个pasv给server,就是client在问能不能给我支持pasv,如果防火墙它能够支持pasv,还是在第一信道它会回一个227 1,2,3,4,5,6 你来,这个源端口是随机的,目的就是1,2,3,4 5*256+6端口号。

passive安全,一般都是先passive,如果不行使用active。

默认被打开的策略

只有当

1.增加新的监控协议

2.删除监控协议

3.改变端口号

才有必要更改

建议监控这些协议,不要动

关闭单个监控例子:policy-map global-policy

class inspection_default

no inspect ctiqbe

增加tftp协议监控

class-map 8080_inspect_traffic

match port tcp eq 8080

policy-map global_policy

class 8080_inspect_traffic

inspect http

ftp inspect

ftp active

client-10.1.1.1-----10.1.1.100-inside-pix-outside-202.1.1.100-----202.1.1.1-server

第一信道:1,              ip                                        ip

s:10.1.1.1 1045 d:202.1.1.1 21  s:202.1.1.100 2048 d:202.1.1.1 21

                         xlate: 10.1.1.1 1045---202.1.1.100 2048

                         conn: 10.1.1.1 1045---202.1.1.1 21

第一信道:2,              ip                   tcp | ftp | ftp.data

s:10.1.1.1 1045 d:202.1.1.1 21              port 10.1.1.1 2000

                                                     tcp | ftp | ftp.data

s:202.1.1.100 2048 d:202.1.1.1 21        prot 202.1.1.100 3045

                          xlate:10.1.1.1 1045---202.1.1.100 2048

                          conn:10.1.1.1 1045---202.1.1.1 21

                          xlate:10.1.1.1 2000---202.1.1.100 3045

第三信道:3,from server

                                ip                    tcp | ftp | ftp.data

s:202.1.1.1 20 d:202.1.1.100 3045

                                ip                    tcp | ftp | ftp.data

s:202.1.1.1 20 d:10.1.1.1 200

在第一信道client要发一个包出去,当穿越防火墙的时候会做一个端口转换,防火墙会做转换槽位记录和连接表象记录,相应的返回流量。第一信道建立完成,相应需要下载文件,会发送一个port,当这个包穿越防火墙的时候,源ip转了,根据开始的转,目的不变。防火墙把ftp数据里面的东西同样也转了port。同样产生一个新的xlate,还会产生一个访问控制列表,已经算好了,会以那个源目地址端口过。1.对2121进行监控

2.对文件名进行过滤

regex file "conllins"(对文件名存在conllins进行过滤)

test regex sdfddfcollinssdfsdf "conllins"测试

policy-map type inspect ftp collins

match filename regex file(文件名字)

reset(干掉)policy-map global_policy

class inspection_default

inspect ftp strict conllins(限制)

3.文件类型进行过滤

policy-map type inspect ftp collins

parameters

match request-command(特殊的应用命令) get put

reset

4.对用户名进行过滤

5.对命令进行过滤

6.对regex的测试

http

1.命令过滤

2.url过滤

3.java active过滤

在http内部混入的非法流量进行过滤

url=协议+uri

例子

policy-map type inspect http sfdsdf

match request method(基于http命令进行过滤)

特殊协议remote shell远程调用,rsh tcp514,

sql*net oracle 数据库

esmtp mail服务,争抢了8个esmtp的命令默认已经监控了

dns

默认已经被监控dns

1.跟踪request id

2.收到应答关掉连接

3.重新组装确认dns的长度

例子:

nat (inside) 1 10.0.0.0 255.255.255.0 dns

global (outside) 1 192.168.0.20-192.168.0.254 netmask 255.255.255.0

static (inside,outside) 192.168.0.17 10.0.0.10 dns

access-list all permit tcp any host 192.168.0.17 eq www

access-group all in interface outside

相同安全级别的接口是不通的

same-security-traffic permit inter-interface 安全级别相同可以通

不支持接口的反弹不能通信

same-security-traffic permit intra-interface 同一接口下通信

icmp

匹配如下条件

1.源目;icmp类型;id;序列号

2.一个request一个reply

pptp:符合协议,微软远程拨号协议。vpn

tcp/1723

gre

snmp过滤不安全版本

版本1和2都不安全

例子:snmp-map snmap_deny_v1

deny version 1

exit

policy-map global_policy

class anmp-port

inspect snmp snmp_deny_v1

service-policy global_policy global

实验:

穿越防火墙建立bgppix:

int e0

nameif outside

ip add 202.100.1.254 255.255.255.0

no sh

int e1

nameif inside

ip add 10.1.1.254 255.255.255.0

no sh

r1:int e0

ip add 10.1.1.1 255.255.255.0

no sh

ip route 202.100.1.0 255.255.255.0 10.1.1.254

r2:

int e0

ip add 202.1.1.1 255.255.255.0

no sh

ip route 10.1.1.0 255.255.255.0 202.1.1.254

r1:

router bgp 1

no syn

no au

neighbor 202.100.1.1 remote-as 1

int lo0

ip add 1.1.1.1 255.255.2555.0

router bgp 1

network 1.1.1.0 mask 255.255.255.0

r2:

int lo0

ip add 2.2.2.2 255.255.255.0

router bgp 1

no au

no syn

neighbro 10.1.1.1 remote-as 1

network 2.2.2.0 mask 255.255.255.0

r1:

router bgp 1

neighbor 202.100.1.1 possword cisco

r2:

router bgp 1

neighbor 10.1.1.1 password cisco

cisco tcp首部(序列号)tcp伪首部(ip)

pix:

access-list tcp permit tcp any any

class-map tcp

match access-list tcp

policy map global policy

class tcp

set connection random-sequence-number disable(关闭扰乱tcp序列号)

tcp-map conllins

tcp-options range 19 19 allow(让tcp 19过)

syn-data drop

window-variation drop-connection

checksum-verification

policy-map global policy

class tcp

set  connection advanced-options collins