第三天2.advanced_protocol_handling
先进协议处理
有些协议会动态协商一些第二信道,如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