如图所示: 


wKioL1j9rGuCP4QbAABAJQoeh1U878.png-wh_50


inside主机基本配置

inside>en

inside#conf t

inside(config)#int f0/0

inside(config-if)#ip add 10.1.1.2 255.255.255.0

inside(config-if)#no shutdown

inside(config-if)#exit

inside(config)#ip route 0.0.0.0 0.0.0.0 10.1.1.1

inside(config)#enable password cisco

inside(config)#line vty 0 4

inside(config-line)#pass

inside(config-line)#password cisco

inside(config-line)#login

inside(config-line)#exit

inside(config)#

outside主机基本配置

outside>en

outside#conf t

outside(config)#int f0/0

outside(config-if)#ip add 20.1.1.2 255.255.255.0

outside(config-if)#no shutdown

outside(config-if)#exit

outside(config)#ip route 0.0.0.0 0.0.0.0 20.1.1.1

outside(config)#enable pass cisco

outside(config)#line vty 0 4

outside(config-line)#password cisco

outside(config-line)#login

outside(config-line)#exit

outside(config)#

CISCO ASA配置

ciscoasa> en

Password:

ciscoasa# conf t

ciscoasa(config)# int e0/0

ciscoasa(config-if)# nameif inside

INFO: Security level for "inside" set to 100 by default.

ciscoasa(config-if)# security-level 100

ciscoasa(config-if)# ip add 10.1.1.1 255.255.255.0

ciscoasa(config-if)# no shutdown

ciscoasa(config-if)# int e0/1

ciscoasa(config-if)# nameif outside

INFO: Security level for "outside" set to 0 by default.

ciscoasa(config-if)# security-level 0

ciscoasa(config-if)# ip add 20.1.1.1 255.255.255.0

ciscoasa(config-if)# no shutdown

ciscoasa(config-if)#

基本测试

inside#ping 10.1.1.1

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds:

.!!!!

Success rate is 80 percent (4/5), round-trip min/avg/max = 8/27/52 ms

inside#

outside#ping 20.1.1.1

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 20.1.1.1, timeout is 2 seconds:

.!!!!

Success rate is 80 percent (4/5), round-trip min/avg/max = 12/34/64 ms

outside#

inside主机和outside主机都能ping通网关。

inside主机向outside主机发起telnet连接

inside#telnet 20.1.1.2

Trying 20.1.1.2 ... Open

 

User Access Verification

 

Password:

outside>en

Password:

outside#

ASA默认从高安全级别到低安全级别的访问是允许的,telnet连接属于tcp 连接,

ciscoasa# show conn detail

1 in use, 1 most used

Flags: A - awaiting inside ACK to SYN, a - awaiting outside ACK to SYN,

       B - initial SYN from outside, C - CTIQBE media, D - DNS, d - dump,

       E - outside back connection, F - outside FIN, f - inside FIN,

       G - group, g - MGCP, H - H.323, h - H.225.0, I - inbound data,

       i - incomplete, J - GTP, j - GTP data, K - GTP t3-response

       k - Skinny media, M - SMTP data, m - SIP media, n - GUP

       O - outbound data, P - inside back connection, q - SQL*Net data,

       R - outside acknowledged FIN,

       R - UDP SUNRPC, r - inside acknowledged FIN, S - awaiting inside SYN,

       s - awaiting outside SYN, T - SIP, t - SIP transient, U - up

       X - inspected by service module

TCP outside:20.1.1.2/23 inside:10.1.1.2/11001 flags UIO

outside#show users

    Line       User       Host(s)              Idle       Location

*  0 con 0                idle                 00:00:00   

 130 vty 0                idle                 00:00:15 10.1.1.2

 

  Interface    User               Mode         Idle     Peer Address

从低安全级别到高安全级别的访问,其结果是无法访问。

outside#telnet 10.1.1.2

Trying 10.1.1.2 ...

% Connection timed out; remote host not responding

如果让outside主机能够访问inside主机,需在防火墙上写入站规则:

ciscoasa(config)# access-list out-to-in permit ip host 20.1.1.2 host 10.1.1.2

ciscoasa(config)# access-group out-to-in in interface outside

ciscoasa(config)#

测试

outside#telnet 10.1.1.2

Trying 10.1.1.2 ... Open

User Access Verification

 

Password:

inside>en

Password:

inside#

入站规则也可以这样写

ciscoasa(config)# access-list out-to-in permit tcp host 20.1.1.2 host 10.1.1.2 eq 23

ciscoasa(config)# access-group out-to-in in interface outside

如果在ASA防火墙上做控制出站的规则,可以这样写

ciscoasa(config)# access-list in-to-out deny ip 10.1.1.0 255.255.255.0 any

ciscoasa(config)# access-list in-to-out permit ip any any

ciscoasa(config)# access-group in-to-out in interface inside

测试

inside#telnet 20.1.1.2

Trying 20.1.1.2 ...

% Connection refused by remote host

关于ICMP报文穿越ASA防火墙的实验

 

从内部主机ping防火墙inside接口

R1#ping 10.1.1.1

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds:

.!!!!

Success rate is 80 percent (4/5), round-trip min/avg/max = 4/20/36 ms

R1#

关闭到inside接口的ping

ciscoasa(config)# icmp deny any echo inside

测试

R1#ping 10.1.1.1

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds:

.....

Success rate is 0 percent (0/5)

从内部主机,pingASA防火墙的inside接口,由于使用了ICMP ACL,所以导致ping失败

 

查看ICMPACL

ciscoasa# show run icmp

  icmp unreachable rate-limit 1 burst-size 1

  icmp deny any echo inside

ciscoasa#

开启到ASA防火墙的inside接口的ping

ciscoasa(config)# clear configure icmp

检查是否可以再次ping到防火墙的inside接口

R1#ping 10.1.1.1

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 12/20/28 ms

R1#

配置防火墙的outside接口,使它拒绝所有Ping请求,而允许所有不可达的消息

ciscoasa(config)# icmp deny any echo outside

ciscoasa(config)# icmp permit any unreachable outside

测试

R2#ping 20.1.1.1

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 20.1.1.1, timeout is 2 seconds:

.....

Success rate is 0 percent (0/5)

保存配置

  ciscoasa(config)# write memory

注意在GNS3上模拟ASA,保存配置的命令不可用。

默认情况下,禁止ICMP报文穿越ASA防火墙,在本拓扑中R1 ping R2是不通的,防火墙在outside接口上拒绝返回的ICMP报文。默认情况下,ASAicmp协议无状态化处理,即不会将ICMP流量存在Conn表中。

如果需要做排错或维护任务,可暂时允许ICMP报文穿越ASA防火墙。

 

ciscoasa(config)# access-list aclicmp permit icmp any any

ciscoasa(config)# access-group aclicmp in interface outside

测试

R1#ping 20.1.1.2

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 20.1.1.2, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 20/32/56 ms

R1#

 

 

如何在ASA防火墙上配置静态路由

ASA支持静态和默认路由,动态路由

Gns3模拟器配置Cisco ASA防火墙_第1张图片 

R1#conf t

R1(config)#int f0/0

R1(config-if)#ip add 10.1.1.2 255.255.255.0

R1(config-if)#no shutdown

R1(config-if)#exit

R1(config)#enable password cisco

R1(config)#line vty 0 4

R1(config-line)#password cisco

R1(config-line)#login

R1(config-line)#exit

R1(config)#ip route 0.0.0.0 0.0.0.0 10.1.1.1

R2>en

R2#conf t

R2(config)#interface f1/0

R2(config-if)#ip add 30.1.1.2 255.255.255.0

R2(config-if)#no shutdown

R2(config-if)#exit

R2(config)#int f0/0

R2(config-if)#ip add 20.1.1.1 255.255.255.0

R2(config-if)#no shutdown

R2(config-if)#exit

R2(config)#

R2(config)#enable password cisco

R2(config)#line vty 0 4

R2(config-line)#password cisco

R2(config-line)#login

R2(config-line)#exit

R3#conf t

R2(config)#ip route 0.0.0.0 0.0.0.0 30.1.1.1

 

 

R3(config)#int f0/0

R3(config-if)#ip add 20.1.1.2 255.255.255.0

R3(config-if)#no shu

R3(config-if)#no shutdown

R3(config-if)#exit

R3(config)#enable password cisco

R3(config)#line vty 0 4

R3(config-line)#password cisco

R3(config-line)#login

R3(config-line)#exit

R3(config)#ip route 0.0.0.0 0.0.0.0 20.1.1.1

测试

R1#telnet 30.1.1.2

Trying 30.1.1.2 ... Open

R1#telnet 20.1.1.2

Trying 20.1.1.2 ...

% Connection timed out; remote host not responding

连接R3主机,失败。原因是ASA不知道20.1.1.0/24网段

ASA防火墙上写静态路由

ciscoasa(config)# route outside 20.1.1.0 255.255.255.0 30.1.1.2

测试

R1#telnet 20.1.1.2

Trying 20.1.1.2 ... Open

 

User Access Verification

 

Password:

如果在防火墙上写默认路由可以这样写

ciscoasa(config)# route outside 0 0 30.1.1.2

按照以上理论测试带有DMZ区域的实验。


总结:

防火墙技术分为三种:包过滤防火墙,代理防火墙,状态包过滤;

过滤防火墙:使用ACL控制进入或离开的网络流量,ACL可以匹配包的类型或其他参数(IP地址,目的ip地址,端口号等)制定。类防火墙有以下不足,ACL制定和维护都比较困难;可以使用IP欺骗很容易绕过ACL;

代理防火墙:也叫做代理服务器。他在OSI高层检查数据包,然后和制定的规则相比较,如果数据包的内容符合规则并且被允许,那么代理服务器就代替源主机向目的地址发送请求,从外部主机收到请求后,在转发给被保护的源请求主机。代理防火墙的缺点就是性能问题,由于代理防火墙会对每个经过的包都会深度检查,即使这个包以前检查过,所以系统和网络的性能都有很大的影响。

状态包过滤防火墙:Cisco ASA就是使用的状态包过滤防火墙,防火墙维护每个会话的状态信息,这些状态信息写在状态表里,状态表的条目有地址,目的地址,端口号,TCP序列号信息以及每个tcpudp的其他的标签信息。所有进入或外出的流量都会和状态表中的连接状态进行比较,只有状态表中的条目匹配的时候才允许流量通过。防火墙收到一个流量后首先查看是否已经存在于连接表中,如果没有存在,则看这个连接是否符合安全策略,如果符合,则处理后将该连接写入状态表;如果不符合安全策略那么就将包丢弃。状态也叫Fast path防火墙只处理第一个包,后续的属于该连接的包都会直接按照Fast Path转发,因此性能就有很高的提升。

防火墙功能和许可证:

防火墙的时候自带有一些基本的功能,如果需要增加一些额外的功能,那么就需要购买许可证(license激活相应的功能可以使用show version命令查看目前防火墙拥有的功能列表:

 

防火墙许可证类型有:

Unrestricted(UR)--无限制的许可证使得防火墙所能支持的所有特性全部打开。无限制的活动连接数,打开防火墙所支持的所有端口,可以使用防火墙的Failover(故障切换功能)等等

RestrictedR--限制限制防火墙开启的特性,比如限制活动连接数,使防火墙不支持Failover限制防火墙支持的最大接口等;

Failover(FO)--该版本使得防火墙可以作为Secondary设备参与Failover(故障切换)

Failover-active/activeFO-AA)--该版本使得防火墙可以作为secondary设备参与active/active Failover ,同时还要求另一个防火墙使用UR版。

Cisco ASA 安全算法

ASA 处理TCP连接的安全算法

1. 一个内部主机的第一个IP数据包导致一个转换的产生,这个信息会保留在内存中,用来检查以后的数据包,做地址转换,然后防火墙利用TCP的相关信息来建立一个连接槽

2. 这个连接被标记为完成是一个TCP半开连接。

3. 防火墙随机产生一个用于连接的初始序列号,,并且将数据包转发到外连接口。

4. 在这一步,防火墙期待从目的主机收到一个同步确认包(syn/ack),然后防火墙将收到的包的相关信息依连接槽内存的信息进行匹配计算信息的先后顺序,并将返回的数据包转发到内部主机。

5. 内部主机通过发送一个ACK完成了连接建立和3次握手。

6. 防火墙上的连接槽被标记为connected或者active-established这时就可以发送数据了。连接完成计数器也将被重置。

以上防火墙处理TCP连接的安全算法。

ASA处理UDP连接的安全算法

1. 防火墙从内部主机收到第一ip数据包检验已经配置好的转换设置后,防火墙将会创建一个转换槽,将保存这个信息在内存中来检查以后的数据包。然后防火墙利用UDP内的相关信息建立一个UDP连接槽

2. 在用户配置的UDP timeout时间内,防火墙将会维护这个UDP连接槽。但是UDP连接槽的idle时间超出配置UDP timeout时间,就会从连接表中删除。

3. UDP的timeout周期内,防火墙执行适应性安全算法(ASA) 目的主机收到的UDP数据进行状态检查。

4. 如果返回的UDP数据包完全匹配并且没有超时,那么这个数据将被传回内部主机。

最后要注意,ASA所有安全策略都是应用到状态连接中,因此要首先生成一个连接表,然后才会比较安全策略等内容。

UDP的一些特性

1. UDP是一个不可靠(连接但却很高效的传输协议其不可靠体现在它不提供传输的确认。

2. 伪造UDP数据包很容易,因为他没有握手和序列的机制。由于没有状态机制,所以传输的发起者或者当前的状态经常不确定。

3. UDP不提供传输保障

4. 没有连接的建立和中止。

5. UDP没有拥塞管理和避免机制

6. 使用UDP服务通常被分为两类:

 请求-回应,或称之为乒乓服务。例如域名服务(DNS)

 服务,例如视频,VOIP,网络文件系统(NFS)

配置接口参数:

1. Security level asa/pix讲,每个接口都必须有一个安全级别,安全级别是0到100之间的数字,0代表低安全级别,100代表高安全级别;

2. 默认情况下,所有从高安全级别接口低安全级别接口的流量都是允许的,所有从低安全级别接口到高安全级别接口的流量都是被拒绝的,都需要使用ACL来允许想要允许的流量;当然,高安全级别接口到低安全级别接口的流量也可以通过ACL控制。

3. 默认情况下,相同安全级别接口之间不允许信,可以使用命令:

Hostname(config)#same-security-traffic permit inter-interface

允许相同安全级别接口之间互相通信

4. 对于防火墙的任何接口都必须配置以下内容

Name

Ip address

Security level

静态路由

防火墙模式下,ASA支持静态和默认路由,ASA支持RIP和OSPF,因此如果你的网络运行的是其他的路由协议,那么就要使用静态路由,使用静态路由可以节省CPU的负载。ASA相同的接口,最多支持3条等价静态路由。

Hostname(config)#route 接口名称 目标网段 掩码 下一跳地址

配置ACL

一个ACL是由多个访问控制条目(Access Control Entries,ACE)组成,一个ACE明一个permit或deny规则,一个ACE可以根据协议指定的源地址目的地址端口号ICMP类型等来定义,ACE执行是按照顺序执行的,一旦发现匹配的ACE,那么就不会再继续往下匹配。

对于TCP和UDP连接,不需要使用ACL允许返回的流量进入,因为防火墙的安全算法会生成一个连接表来允许这些流量返回;对于连接流量,比如ICMP,需要使用ACL明确允许返回的流量进入防火墙,或者可以打开ICMP审查引擎。

关于ACL相关命令参考书上的命令。

多区域默认的访问规则:

Inside可以访问outside。

Inside可以访问dmz

Dmz可以访问outside

Dmz不能访问inside

Outside不能访问inside

Outside不能访问dmz.