一:思科防火墙支持下列用户配置方式:
Console,Telnet,SSH(1.x或者2.0,2.0为7.x新特性,PDM的http方式(7.x以后称为ASDM)和VMS的Firewall Management Center。

Catalyst6500的FWSM(防火墙服务模块Firewall Service Module)没有物理接口接入,通过下面CLI命令进入:
       Switch# session slot slot processor 1 (FWSM所在slot号)
用户模式:
Firewall> 为用户模式,输入enable进入特权模式Firewall#。特权模式下可以进入配置模式,在6.x所有的配置都在一个全局模式下进行,7.x以后改成和IOS类似的全局配置模式和相应的子模式。

防火墙具有下列几种许可形式,通过使用show version命令可以看设备所支持的特性:
Unrestricted (UR) 所有的限制仅限于设备自身的性能,也支持Failover
Restricted (R) 防火墙的内存和允许使用的最多端口数有限制,不支持Failover
Failover (FO) 不能单独使用的防火墙,只能用于Failover
Failover-Active/Active (FO-AA) 只能和UR类型的防火墙一起使用,支持active/active failover
注:FWSM内置UR许可。

二:接口基础:
防火墙的接口都必须配置接口名称,接口IP地址和掩码(7.x开始支持IPv6)和安全等级。接口可以是物理接口也可以是逻辑接口(vlan),从6.3开始支持SPAN、trunk,但只支持802.1Q封装,不支持DTP协商。
接口基本配置:
注:对于FWSM所有的接口都为逻辑接口,名字也是vlan后面加上vlanid。例如FWSM位于6500的第三槽,配置三个接口,分别属于vlan 100,200,300.
Switch(config)# firewall vlan-group 1 100,200,300
Switch(config)# firewall module 3 vlan-group 1
Switch(config)# exit
Switch# session slot 3 processor 1
经过此配置后形成三个端口vlan100,vlan200,vlan300
命名接口:
FWSM 2.x:
Firewall(config)# nameif vlan-id if_name securitylevel

配置IP地址:
静态地址:
Firewall(config)# ip address if_name ip_address [netmask]
动态地址:
Firewall(config)# ip address outside dhcp [setroute] [retry retry_cnt]
注:setroute参数可以同时获得来自DHCP服务器的缺省路由,再次输入此命令可以renew地址。

ARP配置
配置一个静态的ARP条目:
Firewall(config)# arp if_name ip_address mac_address [alias]
配置timeout时间:
Firewall(config)# arp timeout seconds 缺省为4小时

注:一般情况下使用clear arp会清除所有的ARP缓存,不能针对单个的条目,但是可以通过以下变通方法:配置一个静态的条目,映射有问题的ip为一个假的mac地址,然后no掉该命令就会重新建立一个arp条目。

启用PRF防止地址欺骗:
Firewall(config)# ip verify reverse-path interface if_name
配置静态路由:
Firewall(config)# route if_name ip_address netmask gateway_ip [metric]
配置RIP被动听RIP更新(v1,v2):
Firewall(config)# rip if_name passive [version 1] (Firewall(config)# rip if_name
passive version 2 [authentication [text | md5 key (key_id)]])
宣告该接口为缺省路由:
Firewall(config)# rip if_name default version [1 | 2 [authentication [text | md5 key key_id]]
配置OSPF:
定义OSPF进程:
Firewall(config)# router ospf pid
指定相应网络到OSPF区域:
Firewall(config-router)# network ip_address netmask area area_id
可选:定义Router ID:
Firewall(config-router)# router-id ip_address
记录OSPF邻居状态更新:
Firewall(config-router)# log-adj-changes [detail]
启用OSPF更新认证:
Firewall(config-router)# area area_id authentication [message-digest]
宣告缺省路由:
Firewall(config-router)# default-information originate [always] [metric value] [metric-type {1 | 2}] [route-map name]
调节OSPF参数:
Firewall(config-router)# timers {spf spf_delay spf_holdtime |lsa-group-pacing seconds}

配置成为DHCP Server:
配置地址池:
Firewall(config)# dhcpd address ip1[-ip2] if_name (最多256个客户端)
配置DHCP参数:
第 6 页
思科 ASA 和 PIX 防火墙配置手册
Firewall(config)# dhcpd dns dns1 [dns2]
Firewall(config)# dhcpd wins wins1 [wins2]
Firewall(config)# dhcpd domain domain_name
Firewall(config)# dhcpd lease lease_length Firewall(config)# dhcpd ping_timeout timeout
启用DHCP服务:
Firewall(config)# dhcpd enable if_name
验证:show dhcdp, show dhcpd bindings, show dhcpd statistics
配置DHCP中继:
定义真实DHCP Server:
Firewall(config)# dhcprelay server dhcp_server_ip server_ifc(最多4个)
中继参数:
Firewall(config)# dhcprelay timeout seconds
Firewall(config)# dhcprelay setroute client_ifc
启用中继:
Firewall(config)# dhcprelay enable client_ifc
验证 show dhcprelay statistics

Firewall(config)# console timeout minutes 配置console登录的超时(缺省0不超时)
禁止来自outside端口的telnet,启用telnet:
Firewall(config)# telnet ip_address netmask if_name
Firewall(config)# telnet timeout minutes 配置telnet超时

三:PDM/ASDM配置:
由于PDM存放位置固定,所以不需要指定镜像的位置,ASDM使用:
Firewall(config)# asdm p_w_picpath device:/path
来指定镜像位置,如果没有可以使用copy命令来安装。然后配置访问许可:
Firewall# http ip_address subnet_mask if_name
启用HTTP进程:
Firewall# http server enable
使用https://ip-address/admin来访问。

四:防火墙的路由模式和地址翻译
特性介绍:从高安全等级到低安全等级的访问称为outbound访问,需要配置地址翻译和outbound访问控制,PIX缺省情况下不用配置ACL就允许此类访问,FWSM则需要配置ACL来允许此类型的访问。而从低安全等级到高安全等级的访问称为inboud访问,也需要配置地址翻译和inboud访问控制,此类型必须配置ACL.同一安全等级的访问也可以配置地址翻译。

静态NAT:
基于地址的静态翻译:
Firewall(config)# static (real_ifc,mapped_ifc) {mapped_ip | interface} {real_ip [netmask mask]} [dns] [norandomseq] [max_conns [emb_limit]]
基于端口的静态翻译:
Firewall(config)# static (real_ifc,mapped_ifc) {tcp | udp} {mapped_ip | interface} mapped_port {real_ip real_port [netmask mask]} [dns] [norandomseq] [max_conns[emb_limit]]
策略NAT:
定义翻译策略:
Firewall(config)# access-list acl_name permit ip real_ip real_mask foreign_ip foreign_mask
静态的:

Firewall(config)# static (real_ifc,mapped_ifc) mapped_ip access-list acl_name [dns] [norandomseq] [max_conns [emb_limit]]

NAT的:
Firewall(config)# global (mapped_ifc) nat_id {global_ip [-global_ip] [netmask global_mask]} | interface
Firewall(config)# nat (real_ifc) nat_id access-list acl_name [dns] [outside][norandomseq] [max_conns [emb_limit]]
Identify NAT Firewall(config)# nat (real_ifc) 0 real_ip real_mask [dns] [norandomseq] [max_conns [emb_limit]]
注:nat 0和static 相同地址的区别在于:nat 0只能用于outbound访问,static两种访问都可以,对同一地址不建议同时配置此两类命令。

NAT Exemption
Firewall(config)# access-list acl_name permit ip local_ip local_mask foreign_ip foreign_mask
Firewall(config)# nat (real_ifc) 0 access-list acl_name [dns] [outside] [max_conns [emb_limit] [norandomseq]]
注:此类型NAT策略只能根据源和目的地址不能根据协议类型或者端口
动态地址翻译
定义NAT的映射地址:
Firewall(config)# global (mapped_ifc) nat_id global_ip[-global_ip] [netmask global_mask]
定义PAT的映射地址:
Firewall(config)# global (mapped_ifc) nat_id {global_ip | interface}
定义翻译策略:
Firewall(config)# nat (real_ifc) nat_id real_ip [mask [dns] [outside] [[norandomseq] [max_conns [emb_limit]]]
注:也可以使用ACL来做类似的策略NAT。

五:使用ACL进行访问控制

特性介绍:防火墙的ACL配置跟IOS不同,子网掩码部分为正常的子网掩码不需要使用反转的子网掩码。还支持Object group,包含IP地址组,
ICMP类型组,IP协议或者端口组,并且支持组嵌套。access-list acl_name compiled配置Turbo ACL,7.x自动turbo。防火墙的ACL缺省是扩展模式的,7.x后也支持标准模式了尽管只用于路由协议的配置上,并且加上了extend的参数,虽然配置的时候可以不必强制用这个参数但是当你需要移除该条目的时候要记得把extend这个参数加上。
配置
定义Object Group
网络对像组
Firewall(config)# object-group network group_id

Firewall(config-network)# description text
Firewall(config-network)# network-object ip_addr mask (或者 host ip_addr)
Firewall(config-network)# group-object group_id

ICMP对像组
Firewall(config)# object-group icmp-type group_id
Firewall(config-icmp-type)# description text
Firewall(config-icmp-type)# icmp-object icmp_type
Firewall(config-icmp-type)# group-object group_id

协议对像组
Firewall(config)# object-group protocol group_id
Firewall(config-protocol)# description text
Firewall(config-protocol)# protocol-object protocol
Firewall(config-protocol)# group-object group_id
服务对像组
Firewall(config)# object-group service group_id {tcp | udp | tcp-udp}
Firewall(config-service)# description text
Firewall(config-service)# port-object range begin_port end_port (或者eq port)

Firewall(config-service)# group-object group_id
定义时间范围 7.0特性
Firewall(config)# time-range name
Firewall(config-time-range)# periodic start-day hh:mm to end-day hh:mm
Firewall(config-time-range)# periodic days-of-the-week hh:mm to hh:mm
Firewall(config-time-range)# absolute [start hh:mm day month year] [end hh:mm day month year]
配置ACL
Firewall(config)# access-list acl_id [line line-num] [extended] {permit | deny} {protocol | object-group protocol_obj_group} {source_addr source_mask | object-group network_obj_group} [operator sport | object-group service_obj_group] {destination_addr destination_mask |object-group network_obj_group} [operator dport | object-group service_obj_group] [log [[disable | default] | [level]]] [interval secs]] [time-range name] [inactive]

六:配置Failover增加可用性

特性介绍:为了增强可用性,避免单点故障,提高性能等原因才引入了Failover的特性。Active-Standby是最初支持的一种特性,其中一台是UR的许可,另一台为UR或者Failover-only的许可,FWSM缺省支持此种模式,在该模式下一个为Active工作状态,Standby只是监控Active的状态而不工作,这样就在性能上虽然有两台设备但是并没有得到加强。在7.x以后由于引入了context的概念,这样Active-Active另一种Failover的特性也出现了,在每个context下有自己的active和standby,配置每个设备在不同context下的角色从而使其都工作,也增加了性能,但是此模式只被PIX515E,525,535和ASA平台支持。

6.1 配置Failover
确定主备用的设备:一种方式是通过不同的许可来决定,如果两者都是UR的许可,对于适用serial连接的根据线缆两端的主备用标识来决定,如果适用lan的话使用下面的命令来决定:
Firewall(config)# failover lan unit {primary | secondary}
配置lan使用的端口:
FWSM 2.x:
Firewall(config)# failover interface ip if_name ip_address mask standby ip_address

Firewall(config)# failover interface ip if_name ip_address mask standby ip_address
定义用于Failover通讯的接口:
FWSM 2.x:
Firewall(config)# failover lan interface if_name vlan vlan

Firewall(config)# failover lan interface if_name phy_if
也可以使用failover lan key key-string命令对通讯进行加密
failover lan enable 启用lan-based failover,FWSM缺省使用此模式,不需要此命令。
对于Active-Active模式需要在主设备的system execution space下配置Failover组:
Firewall(config)# failover group {1 | 2}
Firewall(config-fover-group)# {primary | secondary}
Firewall(config-fover-group)# preempt
对接口使用虚拟的MAC地址:

6.2 管理Failover
show failover命令对状态进行监控,后面可以加state,lan, history,等参数。
(no)Failover active手动的对状态进行切换,重置一个失败的设备failover reset。对于不能同步的挂起设备使用failover reload-standby强制重启。

七:防火墙工作状态验证
7.1防火墙健康检查
CPU负荷:
Firewall# show cpu usage (show cpu usage context all 正常应该在80%以下)
Show processes显示防火墙当前活动进程,一般关注Process和Runtime。
内存利用:
Firewall# show memory
Xlate 表大小:
Firewall# show xlate count
Conn 表大小:
Firewall# show conn count
防火墙流量使用PDM,Syslog, show traffic来计算或者Perfmon计数器:
Firewall# show perfmon
Firewall(config)# perfmon interval seconds ,perfmon {verbose | quiet}
Inspection引擎和Service Policy:
Firewall# show service-policy
Failover:Firewall# show failover
端口状态:
Firewall# show interface
包队列状态:
Firewall# show priority-queue statistics [if_name]