实验拓扑:
1,网络设备和网段以及IP地址如拓扑所示
ASA上的配置:
ciscoasa(config)# hostname ASA
ASA(config)# int g0
ASA(config-if)# ip add 202.100.1.10
255.255.255.0
ASA(config-if)# nameif outside
ASA(config-if)# no sh
ASA(config-if)# int g1
ASA(config-if)# ip add 10.1.1.10
255.255.255.0
ASA(config-if)# nameif inside
ASA(config-if)# no sh
ASA(config-if)# int g2
ASA(config-if)# ip add 172.16.1.10
255.255.255.0
ASA(config-if)# nameif dmz
ASA(config-if)# security-level 50
ASA(config-if)# no sh
ASA(config)# http server enable
ASA(config)# http 0 0 inside
ASA(config)# route outside 0 0 202.100.1.1
OuT-R1上的配置:
OUT-R1(config)#int f0/0
OUT-R1 (config-if)#ip add 202.100.1.1
255.255.255.0
OUT-R1 (config-if)#no sh
OUT-R1 (config)#ip route 0.0.0.0 0.0.0.0
202.100.1.10
OUT-R1 (config)#line vty 0 4
OUT-R1 (config-line)#pass zhangliang
OUT-R1 (config-line)#login
IN-R1上的配置
IN-R1(config)#int f0/0
IN-R1(config-if)#ip add 10.1.1.1
255.255.255.0
IN-R1(config-if)#no sh
IN-R1(config)#ip route 0.0.0.0 0.0.0.0
10.1.1.10
IN-R1(config)#line vty 0 4
IN-R1(config-line)#pass zhangliang
IN-R1(config-line)#login
DMZ上的配置:
DMZ-R1(config)#int f0/0
DMZ-R1(config-if)#ip add 172.16.1.1
255.255.255.0
DMZ-R1(config-if)#no sh
DMZ-R1(config)#ip route 0.0.0.0 0.0.0.0
172.16.1.10
DMZ-R1(config)#line vty 0 4
DMZ-R1(config-line)#pass zhangliang
DMZ-R1(config-line)#login
测试初始化设备的正确性
2,各设备初始化完毕后,完成如下需求:
A,在不适用ACL的前提下,是的IN-R1能够ping通OUT-R1
直接在global-policy里的class inspection-default里添加监控icmp
ASA(config)# policy-map global_policy
ASA(config-pmap)# class inspection_default
ASA(config-pmap-c)# inspect icmp
测试:
B,限制由outside接口进入的网管ASA的SSH流量,最大连接数为1
开启ASA的SSH网管功能
ASA(config)# domain-name qytang.com
ASA(config)# crypto key generate rsa
ASA(config)# ssh 202.100.1.1
255.255.255.255 outside
ASA(config)# username zhangliang pass
zhangliang privilege 15
ASA(config)# aaa authentication ssh console
LOCAL
MPF对SSH网管流量的控制
ASA(config)# class-map type management
outside.ssh
ASA(config-cmap)# match port tcp eq ssh
ASA(config-cmap)# policy-map outside.policy
ASA(config-pmap)# class outside.ssh
ASA(config-pmap-c)# set connection conn-max
1
ASA(config-pmap-c)# service-policy
outside.policy int outside
B,限制由inside接口进入的网管ASA的Telnet/ASDM的流量,最大连接数分别为2和3
开启ASA的Telnet
ASA(config)# telnet 10.1.1.0 255.255.255.0
inside
MPF对Telnet网管和https流量的控制
ASA(config)# class-map type management
inside.telnet
ASA(config-cmap)# match port tcp eq telnet
ASA(config)# class-map type management
inside.https
ASA(config-cmap)# match port tcp eq https
ASA(config-cmap)# policy-map inside.policy
ASA(config-pmap)# class inside.telnet
ASA(config-pmap-c)# set connection conn-max
2
ASA(config-pmap)# class inside.https
ASA(config-pmap-c)# set connection conn-max
3
ASA(config-pmap-c)# service-policy
inside.policy int inside
并发Telnet,Ctrl+shift+6,然后X
激活ASA的日志功能
Logging enable
Logging asdm information
然后断掉并发连接
C,OUT-R1去往DMZ-R1的Telnet流量设置idle timeout为one hour,并启用DCD(dead-connection detection)
先写一条命名的扩展的访问控制列表
ASA(config)# access-list out.telnet.traffic ex permit
tcp host 202.100.1.1 host 172.16.1.1 eq telnet
在CLASS-MAP中调用
ASA(config)# class-map out.telnet.class
ASA(config-cmap)# match access-list out.telnet.traffic
在全局global-policy调用class-map
ASA(config-cmap)# policy-map global_policy
ASA(config-pmap)# class out.telnet.class
设置idle timeout为1小时
ASA(config-pmap-c)# set connection timeout idle 1:00:00
dcd
D,当OUT-R1通过traceroute到IN-R1时,要ASA的出现在traceroute中.
先允许从outside接口进入的UDP端口大于33433的流量
(traceroute从33434开始)
ASA(config)# access-list out extended permit udp any any
gt 33433
ASA(config)# access-group out in int outside
在全局global-policy中激活ASA ttl递减功能
ASA(config)# policy-map global_policy
ASA(config-pmap)# class class-default
ASA(config-pmap-c)# set connection decrement-ttl
测试:ASA出现在了traceroute中
3,BYPASS源自内网去往202.100.1.0/24的TCP状态化监控,解决OUT-R1和IN-R1之间EBGP的MD5认证穿越防火墙问题
TCP状态化监控:
ASA(config)#
access-list bypass.tcp ex permit tcp 10.1.1.0 255.255.255.0 202.100.1.1.0
255.255.255.0
ASA(config)#
class-map bypass.class
ASA(config-cmap)#
match access-list bypass.tcp
ASA(config-cmap)#
policy-map global_policy
ASA(config-pmap)#
class bypass.class
ASA(config-pmap-c)#
set connection advanced-options tcp-state-bypass
解决EBGP MD5认证穿越防火墙,先把BGP流量放了
ASA(config)# access-list out permit tcp host 202.100.1.1
host 10.1.1.1 eq 179
BGP预配:
OUT-R1(config)#router bgp 100
OUT-R1(config-router)#no synchronization
OUT-R1(config-router)#bgp log-neighbor-changes
OUT-R1(config-router)#neighbor 10.1.1.1 remote-as 200
OUT-R1(config-router)#neighbor 10.1.1.1 pass zhangliang
OUT-R1(config-router)#neighbor 10.1.1.1 ebgp-multihop
255
OUT-R1(config-router)#no auto-summary
IN-R1(config)#router bgp 200
IN-R1(config-router)#no synchronization
IN-R1(config-router)#bgp log-neighbor-changes
IN-R1(config-router)#network 1.1.1.1 mask
255.255.255.255
IN-R1(config-router)#neighbor 202.100.1.1 remote-as 100
IN-R1(config-router)#neighbor 202.100.1.1 pass
zhangliang
IN-R1(config-router)#neighbor 202.100.1.1 ebgp-multihop
255
IN-R1(config-router)#no auto-summary
BGP默认路由不行,必须明细路由
OUT-R1(config)#no ip route 0.0.0.0 0.0.0.0 202.100.1.10
OUT-R1(config)# ip route 10.1.1.0 255.255.255.0
202.100.1.10
默认密钥认证的BGP无法穿越ASA
ASA(config)# class-map bgp
ASA(config-cmap)# match port tcp eq bgp
ASA(config)# tcp-map bgp
ASA(config-tcp-map)#
tcp-options range 19 19 allow
ASA(config-tcp-map)#
policy-map global_policy
ASA(config-pmap)# class bgp
ASA(config-pmap-c)# set connection
random-sequence-number disable
ASA(config-pmap-c)# set connection advanced-options bgp
之后BGP UP了
4,
A,位于DMZ区域的FTP服务器提供服务的端口为TCP2121,在防火墙上监控FTP流量.
B,丢弃头部长度大于4096的ESMTP连接,并做日志.
监控FTP流量
ASA(config)# class-map ftp.2121
ASA(config-cmap)# match port tcp eq 2121
ASA(config-cmap)# policy-map global_policy
ASA(config-pmap)# class ftp.2121
ASA(config-pmap-c)# inspect ftp
查看状态监控匹配的数据包:
ASA(config)# show service-policy
丢弃头部长度大于4093的ESMTP连接,并做日志
ASA(config)# policy-map type inspect esmtp esmtp.drop
ASA(config-pmap)# parameters
ASA(config-pmap-p)# match header length gt 4096
ASA(config-pmap-c)# drop-connection log
ASA(config-pmap-c)# policy-map global_policy
ASA(config-pmap)# class inspection_default
ASA(config-pmap-c)# no inspect esmtp
ASA(config-pmap-c)# inspect esmtp esmtp.drop
5,
A,丢弃WIN7访问外部HTTP服务器(out-r1),URL中包含”cisco.com”关键字的所有HTTP请求包.在ASA的inside接口调用策略.
ASA(config)# regex http.regex
"[Cc][Ii][Ss][Cc][Oo]\.com"
ASA(config)# class-map http.class
ASA(config-cmap)# match port tcp eq www
ASA(config-cmap)# policy-map type inspect http
http.policy
ASA(config-pmap)# parameters
ASA(config-pmap-p)# match request header host regex
http.regex
ASA(config-pmap-c)# drop-connection
ASA(config-pmap-c)# policy-map http.map
ASA(config-pmap)# class http.class
ASA(config-pmap-c)# inspect http http.policy
ASA(config-pmap-c)# show run service-policy
service-policy global_policy global
service-policy outside.policy interface outside
service-policy inside.policy interface inside
ASA(config)# no service-policy inside.policy interface
inside
ASA(config)# service-policy http.map int inside
WIN7上做映射:
映射正常
防火墙上检查service-policy
B,对于正常的http请求,做如下限制:
最大连接数为500
最大半开连接数为10
每用户最大连接数为10
每用户最大半开连接数5
ASA(config)# access-list http.traffic ex permit tcp host 10.1.1.1
host 202.100.1.1 eq www
ASA(config)# class-map http.control
ASA(config-cmap)# match access-list http.traffic
ASA(config-cmap)# policy-map global_policy
ASA(config-pmap)# class http.control
ASA(config-pmap-c)# set connection conn-max 500 embryonic-conn-max
100 per-client-max 10 per-client-embryonic-max 5
C,内部接口的入方向对HTTP流量限速为1M
ASA(config)# class-map http.traffic
ASA(config-cmap)# mat port tcp eq www
ASA(config-cmap)# policy-map inside-policy
ASA(config-pmap)# class http.traffic
ASA(config-pmap-c)# police input 1000000
1500
ASA(config-pmap-c)# service-policy
inside-policy int inside
D,通过匹配DSCP值’EF’,来匹配voice流量并在外部接口对匹配的voice流量进行优先级队列处理.
ASA(config)# priority-queue outside
ASA(config-priority-queue)# tx-ring-limit 128
ASA(config-priority-queue)# queue-limit 488
ASA(config-priority-queue)# class-map voip
ASA(config-cmap)# match dscp ef
ASA(config-cmap)# policy-map outside-policy
ASA(config-pmap)# class voip
ASA(config-pmap-c)# priority
ASA(config-pmap-c)# service-po outside-policy int
outside