一、基本配置
#hostname name //名字的设置
#interface gigabitethernet0/0 //进入接口0/0
#nameif outside //配置接口名为outside
#security-level 0 //设置安全级别。 级别从0–100,级别越高安全级别越高
#ip address 218.xxx.xxx.xxx 255.255.255.248 //设置外部ip地址
#no shutdown
#interface ethernet0/1 //进入接口0/1
#nameif inside //配置接口名为inside
#security-level 100 //设置安全级别。 级别从0–100,级别越高安全级别越高
#ip address 192.168.10.1 255.255.255.0 //设置ip地址
#duplex full //全双工
#speed 100 //速率
#no shutdown
#interface ethernet0/2 //进入接口0/2
#nameif dmz //配置接口名为dmz
#security-level 50 //设置安全级别。 级别从0–100,级别越高安全级别越高
#ip address 192.168.9.1 255.255.255.0 //设置dmz接口ip地址
#no shutdown
#interface Management0/0 //进入管理接口
# nameif guanli //接口名
# security-level 100 //安全级别
#ip address 192.168.1.1 255.255.255.0 //IP地址
注意:security-level 配置安全级别。默认外网接口为 0/0 安全级别默认为 0
内网接口为 0/1 安全级别默认为 100
dmz 接口为 0/2 安全级别默认为 50
默认情况下,相同安全级别接口之间不允许通信,可以使用以下命令:
#same-security-traffic permit interface //允许相同安全级别接口之间互相通信。
较高安全接口访问较低安全接口:允许所有基于IP的数据流通过,除非有ACL访问控制列表,认证或授权的限制。
较低安全接口访问较高安全接口:除非有conduit或acl进行明确的许可,否则丢弃所有的数据包。
二、global、nat、static、route命令
1、global命令
global (if_name) nat_id ipaddress–ipaddress [netmask mask]
if_name:指的是接口
nat_id:为地址池的ID标识号
ipaddress–ipaddress [netmask mask]:指定的IP地址池范围,也可以是一个地址
例:
global(outside) 1 218.106.236.247-218.106.236.249 //配置一个地址池
global(outside) 1 interface //配置单个地址为outside接口的地址
global(outside) 1 218.106.236.237 netmask 255.255.255.248 //配置一个地址池,为255.255.255.248所有子网范围内的地址
2、nat命令
(1)基本用法
nat (if_name) nat_id local_ip [netmask]
if_name:指的是接口
nat_id:为地址池的ID标识号,即global中定义的nat_id
local_ip [netmask] :哪些地址转换到nat_id这个地址池上。
(2)动态内部nat转换(多对多)
例:
global(outside) 1 218.106.236.247-218.106.236.249 //配置一个地址池
nat (inside) 1 192.168.9.0 255.255.255.0 //和上面的global配置一起使用,即把192.168.9.0 这个网段的地址转换为218.106.236.247-218.106.236.249这个网段
(3) pat (多对一nat)
当多个ip地址转换为一个ip地址时,就自动在外部IP地址的后面加上大于1024的端口号,以区别不同的转换访问。
global(outside) 1 218.106.236.247 //配置一个外部地址
nat (inside) 1 192.168.9.0 255.255.255.0 //和上面的global配置一起使用,即把192.168.9.0 这个网段的地址转换为218.106.236.247这个外部IP地址。外部人看到的是自动加了端口号的地址。
(4)策略nat
access-list extended net1 permit ip 192.168.9.0 255.255.255.0 host 209.165.200.1 //定义一个策略
global(outside) 1 209.165.200.100 //定义一个地址
nat (inside) 1 access-list net1 //当192.168.9.0 网段的地址访问 209.165.200.1这台电脑时,转换为209.165.200.100这个ip地址。
(5)动态外部nat转换
当低级别的想往高级别的转换时,在后面加outside关键字即可。
nat (dmz) 1 192.168.7.0 255.255.255.0 outside //把dmz接口下的地址nat 到inside接口中
global(inside) 1 192.168.9.10-192.168.9.20 //即dmz接口中的192.168.7.0 网段的地址访问内网时,将转换为内网地址为192.168.9.10-192.168.9.20
(6)nat 0 即nat 免除
nat 0 表示穿过防火墙而不进行nat转换。即表示地址不经过转换直接作为源地址发送穿过防火墙达到低级别安全接口。
nat (dmz) 0 192.168.0.9 255.255.255.255
注意:执行nat的顺序:
nat 0 (nat免除)
静态nat和静态pat (即static命令)
策略动态 nat (nat access-list)
正常的动态nat和pat (nat)
3、static映射命令
充许一个位于低安全级别接口的流量,穿过防火墙达到一个较高级别的接口。即数据流从较低安全级别接口到较高安全级别。
(1)常用方法:
static (real_ifname mapped_ifname) {mapped_ip|interface} real_ip [netmask mask]
real_ifname :较高级别接口名 mapped_ifname:较低级别接口名
mapped_ip:较低级别接口ip地址 interface:较低级别接口 real_ip:较高级别ip地址
扩号内的顺序是:先高级别后低级别,扩号外的顺序是先低级别后高级别,正好相反。
例: static (inside outside) 218.107.233.234 192.167.9.1 //即把218.107.233.234这个外部地址映射到内部地址192.168.9.1上。
(2)静态端口映射
static (real_ifname mapped_ifname) {tcp | udp} {mapped_ip|interface} mapped_port real_ip real_port [netmask mask]
real_ifname :较高级别接口名 mapped_ifname:较低级别接口名
tcp|udp :要映射的端口协议名
mapped_ip:较低级别接口ip地址 interface:较低级别接口 mapped_port:端口名或端口号 real_ip:较高级别ip地址 real_port:端口名或端口号
注意一点很重要:并不是配置了static就可以从外部访问内部了,必须要定义一个访问控制列表来实现一个通道,允许哪些服务或端口,或哪些地址可以访问。
例:
static (inside,outside) tcp interface ftp 192.168.10.4 ftp netmask 255.255.255.255 //把outside接口ip地址的ftp端口映射到192.168.10.4 内部IP的FTP端口。
access-list ftp extended permit tcp any interface outside eq ftp //定议一个访问控制列表,以允许ftp数据流通过。
access-group ftp in interface outside //把访问控制列表应用于接口
4、route 命令
route if_name destination_ip gateway [metric]
if_name: 接口名
destination_ip: 目的地
gateway: 网关
metric: 跳数
例:route outside 0 0 218.102.33.247 1 //即默认网关为 218.102.33.247 ,只有一跳
route inside 192.168.9.0 255.255.255.0 192.168.10.1 //设置到目标192.168.9.0网段的网关为192.168.10.1
访问控制的方法与路由器的没有区别。基本步骤是先定义访问控制列表,然后再应用到接口即可。在此不多作解释,在路由器模块里,会单独把访问列表作解释。
四、防火墙基本管理
1、telnet 配置
#usename name password password //设置登入的帐号和密码
#aaa authentication telnet console LOCAL //设置AAA验证方式。 此处为LOCAL本地。也可以用AAA服务器进入验证。
#telnet 0.0.0.0 0.0.0.0 inside //哪些地址可telnet进此接口
#telnet timeout 10 //超时时长,以分钟为单位
2、ssh登录配置
#usename name password password //设置登入的帐号和密码
#aaa authentication ssh console LOCAL //设置AAA验证方式。 此处为LOCAL本地。也可以用其他服务器进入验证。
#ssh timeout 10
#crypto key generate rsa modulus 1024 //指定rsa密钥的大小,这个值越大,产生rsa的时间越长,cisco推荐使用1024.
# write mem //保存刚才产生的密钥
#ciscoasa(config)#ssh 0.0.0.0 0.0.0.0 {inside|outside} //允许哪些IP可以通过SSH登录此防火墙。 inside为内网接口,outside为外网接口。0.0.0.0 0.0.0.0 表示所有IP,可配置单个IP,也可以配置某段IP。
#ssh timeout 30 //设置超时时间,单位为分钟
#ssh version 1 //指定SSH版本,可以选择版本2
#passwd 密码 //passwd命令所指定的密码为远程访问密码
show ssh //查看SSH配置信息
crypto key zeroize //清空密钥
show crypto key mypubkersa //查看产生的rsa密钥值
3、asdm配置
先上传相应asdm版本到防火墙中。
# webvpn // 进入WEBVPN模式
# username cisco password cisco // 新建一个用户和密码
# http server enable //开启HTTP服务
# http 192.168.9.10 255.255.255.0 inside //允许哪些ip 通过哪个接口可以通过http连上来。此处的意思为:允许192.168.9.10 这个IP用http通过inside连上防火墙.
# http 192.168.1.0 255.255.255.0 guanli //允许192.168.1.0网段经过管理接口连上防火墙。注意要用交叉线和管理接口连接,进行配置。当然事先要设置管理接口的IP,和名称。
经过以上配置就可以用ASDM配置防火墙了。
如果配置了inside接口访问,可直接输入防火墙inside的ip地址。 https://192.168.9.1
如果配置了管理接口访问,首先用交叉线把电脑和防火墙的管理口相连,把电脑设成和管理口段的IP地址,本例中设为192.168.1.0 段的IP打开浏览器在地址栏中输入管理口的IP地址:
https://192.168.1.1
弹出一下安全证书对话框,单击 “是”
输入用户名和密码(就是在串口的WEBVPN模式下新建的用户和密码),然后点击“确定”。
出现也下对话框,点击“Download ASDM Launcher and Start ASDM”开始安装ASDM管理器,安装完以后从网上下载一个JAVA虚拟机软件(使用1.4以上 Java 版本),进入WWW.JAVA.COM下载安装,安装完后点击下面的“Run ASDM as a Java Applet ”。
出现以下对话框, 点击“是”。
出现以下对话框,输入用户名和密码(就是在串口的WEBVPN模式下新建的用户和密码),然后点击“是”。
出现以下对话框,点击“是”。
进入ASDM管理器。
这样就可以通过ASDM来配置防火墙了。
以后就可以直接使用ASDM来管理防火墙了。
一定要注意一点:有时候java的版本过高1.6版以上,会打不开,就试用低版本的(1.4)试一下。
4、其他管理命令
#write memory //把配置保存
#clear configure all //把run-config中的内容清空
#write erase //可清除flash闪存中的配置
#dir //显示flash中的文件
#boot [system|config] <usr>:
例: #boot system flash:/pix-701.bin //即从哪个系统镜像中启动
flash中可以存多个系统镜像和配置文件。boot可以选择从哪个系统镜像中启动。
#clock set 21:00 apr 1 2002 //设置时间
#show memery
#show version
#show cpu usage
六、虚拟防火墙
(一)虚拟防火墙的特性:
1、我们可以将一个单一的物理防火墙逻辑上分为多个虚拟防火墙,每个虚拟防火墙都是独立的设备。
2、它们有自已独立的安全策略,接口和管理接口
3、每个虚拟防火墙保存一个配置文件,以保存每个虚拟防火墙的策略和配置。
4、虚拟防火墙不支持vpn,组播和动态路由协议
(二)虚拟防火墙的种类
虚拟防火墙分为:admin context和普通虚拟防火墙。
admin context防火墙特性:
admin context必须先于其他的虚拟防火墙进行创建和配置。
用户登录到admin context虚拟防火墙就拥有了系统管理员的权限,可以访问系统以及其他虚拟防火墙。
(三)流量分类
因一个物理防火墙分为多个虚拟防火墙,那到底哪些数据流量属于哪个虚拟防火墙的呢?即如何把数据流量分配给虚拟防火墙。
1、按接口划分:即将一个接口唯一的划分到一个虚拟防火墙中,那么通过这个接口的流量就都属于这个虚拟防火墙的。
2、基于MAC地址划分:一个接口属于多个虚拟防火墙共有。需要为这个共享接口指定多个MAC地址,即每个虚拟防火墙指定一个mac地址。可手工指定,也可自动产生。
由于ASA的接口有限,所以在多虚拟防火墙的模式下,我们会经常遇到一个接口同时分配给多个虚拟防火墙。这个时候使用物理接口来对流量进行分类的办法将在这种情况下不再适用,因为防火墙无法确定流量究竟应该转发到哪个虚拟防火墙。我们需要使用其他的方法来对流量的走向进行区分,通常我们会使用自动或者手动为这个分配给多个虚拟防火墙的共享接口指定不同的MAC地址,防火墙将使用MAC地址来区分流量的走向。
手动指定MAC地址:
在每个虚拟防火墙的该共享接口下配置:mac-address HHH.HHH.HH
例如:
hostname(config)#Interface F0/0
hostname(config-if)# mac-address 0001.0001.0001
自动指定MAC地址:
在防火墙的SYSTEM平台的全局配置模式下配置:mac-address auto
例如:
hostname(config)# mac-address auto
3、基于NAT划分:如果没有为接口指定唯一的MAC地址,防火墙当收到一个通过共享接口的流量时,防火墙只会检查目的IP地址。通过要使用目的IP地址来决定数据包的走向,那么防火墙必须知道目的地址是被定位在哪个虚拟防火墙上。NAT技术可以提供这样的功能。NAT的转换条目可以使防火墙将数据包转发到正确的虚拟防火墙上。
配置静态NAT转换:
? Context A:
static (inside,shared) 10.10.10.0 10.10.10.0 netmask 255.255.255.0
? Context B:
static (inside,shared) 10.20.10.0 10.20.10.0 netmask 255.255.255.0
? Context C:
static (inside,shared) 10.30.10.0 10.30.10.0 netmask 255.255.255.0
当我们使用多防火墙模式,并且共享了接口到多个虚拟防火墙的时候,我们需要注意将流量转发到正确的虚拟防火墙上去,如果没有指定MAC地址(不管是手动还是自动)并且也没有配置NAT的话,防火墙将不能找到正确的目的地址而将数据包丢弃。
(四)配置虚拟路由器
1、基本配置
#show mode //显示当前路由器运行的模式
#mode mltiple //启用多虚拟防火墙
#admin-context name //首先创建一个admin-context虚拟防火墙
#context name //创建其他虚拟防火墙,注意虚拟防火墙名区分大小写
2、为虚拟防火墙分配接口
先设置好虚拟防火墙名,然后在虚拟防火墙配置模式下配置:
#allocate-interface 物理接口名 [别名] [visible | invisible] //为接口关联一个别名。也可以不关联。
#allocate-interface eth0 int0 visible //把eth0划分给一个虚拟防火墙,并且关联一个别名叫int0,并且让物理接口ID是可见的。invisible是不可见。
#config-url url //每个虚拟防火墙有独立的配置。为虚拟防火墙指定下载配置的地点和名称。
#config-url c1.cfg //指定配置为c1.cfg
七、防火墙模式
防火墙有两种模式:路由器模式和透明模式。路由器模式是常用的模式,配置方法如常规方法,这里主要解释透明模式。
(一) 防火墙的透明模式的特性:
(1)工作在二层,接口不需要配置IP地址;
(2)只支持两个接口,inside和outside接口,这两个接口都接内网地址,像交换机的一个端口一样,没有区别。
(3)不支持nat,QOS,多播,VPN,动态路由协议,ipv6,dhcp中继(可作DHCP服务器,但不能做DHCP中继)
(4)支持多虚拟防火墙。在多虚拟防火墙下,每个虚拟防火墙都需配一个管理IP地址,但不能把管理IP作为网关。
(5)工作在二层,但IP等三层流量要通过防火墙,仍需要ACL访问控制明确允许
(6)arp流量不需要ACL控制就可以通过防火墙。但可以用ARP审查来控制流量。
(二) 透明防火墙的基本配置
#show firesall //显示当前防火墙的运行模式
#firewall transparent //启用透明防火墙模式
#no firewall transparent //返回ROUTE模式
#ip address 192.168.9.1 255.255.255.0 //配置管理IP地址。注意,只是管理IP地址。
注意:在配置透明防火墙的接口时,其他和路由器模式都一样,但不能配置IP地址。
(三)定制mac表
透明模式的防火墙转发包就是依据MAC地址进行转发,学习MAC地址的方法和交换机一样。默认情况下,每个接口自动学习通过它的流量的MAC地址。然后将响应的MAC地址加入MAC地址表中。可以关掉这个功能,但必须手工加入静态MAC地址条目到MAC地址表中,否则ASA防火墙将不能转发任何流量。
#mac-learn int_name disable //int_name是接口名,即关掉哪个接口的MAC自动学习。
#mac-address-table aging-time static int_name mac_address //int_name 指的是接口名, mac_address指的是加入的静态mac地址。
#mac-address-table aging-time timeout_value //mac地址的超时时间。
(四) arp审查
arp审查可以防止arp欺骗攻击,当启用了ARP审查,ASA防火墙会将接收到的ARP包中的mac地址、IP地址和端口号与静态arp表对比。
如果mac地址、IP地址和端口号与静态arp表这三项完全相匹配,则转发包
如果mac地址、IP地址和端口号与静态arp表(这三项中)有任何一条不匹配,则丢弃包
如果与静态arp表中任何条目没有任何匹配,则可设置将包丢弃还是将包flood(洪泛出去)
注意:只与静态ARP相比较,如果不定义静态ARP表,那么ARP审查就没有任何意义了。
1、定义静态ARP
#arp int_name ip_address mac_address //定义静态ARP
#arp-inspection int_name enable [flood|no-flood]
#arp outside 10.1.1.11 0009.7cbe.2100 //定义静态arp,把10.1.1.11和mac地址0009.7cbe.2100 相关联
#arp-inspection outside enable no-flood //当如果没有任何匹配时,将丢弃包。 no-flood是丢弃,flood选项是洪泛