Cisco ASA 基础

1、硬件与软件防火墙ASA 简介

软件防火墙

软件防火墙一般基于某个操作系统平台开发,直接在计算机上进行软件的安装和配置。由于客户平台的多样性,软件防火墙需支持多操作系统,如Unix、Linux、SCO-Unix、Windows等,代码庞大、安装成本高、售后支持成本高、效率低。

硬件防火墙

  1. 硬件防火墙比软件防火墙更有优势,原因有以下两个方面。
    • 硬件防火墙功能强大,且明确是为抵御威胁而设计的。
    • 硬件防火墙比软件防火墙的漏洞少。
  2. Cisco硬件防火墙技术应用于以下三个领域。
    • PIX 500系列安全设备。
    • ASA 5500 系列自适应安全设备。
    • Catalyst 6500 系列交换机和Cisco 7600系列路由器的防火墙服务模块(Firewall Services Module, FWSM)。

ASA安全设备

ASA 5500系列

image-20191119143005609

状态化防火墙

状态化防火墙维护一个关于用户信息的连接表,称为Conn表
Conn表中的关键信息

  1. 源IP地址
  2. 目的IP地址
  3. IP协议(例如TCP或UDP)
  4. IP协议信息(例如TCP/UDP端口号,TCP序列号,TCP控制位)

默认情况下,ASA对TCP和UDP协议提供状态化连接,但ICMP协议是非状态化的

image-20191119143118604

PC访问Web服务器时,状态化防火墙处理的过程如下所述。

  1. PC发起一个HTTP请求给Web服务器。
  2. HTTP请求到达防火墙.防火墙将连接信息(如源IP地址和目的IP地址,使用的TCP议.源IP地址和目的IP地址的TCP端口号)添加到Corn表。
  3. 防火墙将HTTP请求转发给Web服务器.

流量返回时,状态化防火墙处理的过程如下所述。

  1. Web服务器响应HTTP请求。返回相应的数据流量。
  2. 防火墙拦截该流量.检查其连接信息。

如果在Corn表中查找到匹配的连接信息。则流量被允许。
如果在Corn表中找不到匹配的连接信息。则流量被丢弃。

2、ASA安全算法

ASA使用安全算法执行以下三项基本操作

  1. 访问控制列表
    基于特定的网络、主机和服务(TCP/UDP端口号)控制网络访问
  2. 连接表
    维护每个连接的状态信息
    安全算法使用此信息在已建立的连接中有效转发流量
  3. 检测引擎
    执行状态检测和应用层检测
    检测规则集是预先定义的,来验证应用是否遵从每个RFC和其他标准

数据报文穿越ASA的过程

  1. 一个新来的TCP SYN报文到达ASA,试图建立一个新的连接。
  2. ASA检查访问列表,确定是否允许连接。
  3. ASA执行路由查询,如果路由正确,ASA使用必要的会话信息在连接表(xlate和conn表)中创建一个新条目。
  4. ASA在检测引擎中检查预定义的一套规则,如果是已知应用,则进一步执行应用层检测。
  5. ASA根据检测引擎确定是否转发或丢弃报文。如果允许转发,则将报文转发到目的主机。
  6. 目的主机响应该报文。
  7. ASA接收返回报文并进行检测,查询连接确定会话信息与现有连接是否匹配。
  8. ASA转发属于已建立的现有会话的报文。

3、ASA的基本配置

配置主机名

1
ciscoasa(config)# hostname asa

配置密码

  1. 配置特权密码

    1
    asa(config)# enable password asa802
  2. 配置远程登录密码

    1
    asa(config)# passwd cisco

3.1 ASA的接口配置

接口的名称

a)物理名称
物理名称与路由器的名称类似,如Ethernet0/0 Ethernet0/1 可以简写为E0/0 E0/1 通常用来配置接口的速率,双工和IP地址等。

b)逻辑名称
逻辑名称用于大多数的配置命令,如配置ACL,路由等使用的命令中都用到逻辑名称。逻辑名称用来描述安全区域,如通常用的inside表示ASA连接的内部区域(安全性高),用outside表示ASA连接的外部区域(安全性低)。
防火墙与路由器有着本质的不同,防火墙是用于安全目的,所以它的各个接口代表了不同的安全区域,而安全区域之间隔着一堵“墙”。

接口的安全级别

ASA的每个接口都有一个安全级别,范围是0-100,数值越其安全级别越高。当配置接口的名称为inside时,其安全级别自动设置为100。而配置其他的接口名称如outside时,其安全级别自动设置为0
不同安全级别的接口之间互相访问时,遵从如下的默认规则。

  1. 允许出站(outbound)连接,即允许从高安全级别接口到低安全级别接口的流量通过例如,从inside访问outside是允许的。
  2. 禁止入站(indound)连接,即禁止从低安全级别接口到高安全级别接口的流量通过。例如,从outside访问inside是禁止的。
  3. 禁止相同安全级别的接口之间通信。

接口的配置

  1. 配置接口的名称

    1
    Asa(config-if)# nameif name

    接口名称为:inside(入站:默认为100) , outside (出站:默认为:0)或其它名称(DMZ:默认为0)

  2. 配置接口的安全级别

    1
    Asa(config-if)#security-level number

    安全级别范围为:0-100

3.2 ASA 配置示例

image-20191119143817287

1
2
3
4
5
6
7
8
asa(config)#interface e0/1
asa(config-if)# nameif inside
asa(config-if)# ip address 10.1.1.254 255.255.255.0
asa(config-if)#security-level 100
asa(config)#interface e0/0
asa(config-if)# nameif outside
asa(config-if)# ip address 172.16.1.254 255.255.255.0
asa(config-if)#security-level 0

如果ASA的型号是5505则不支持在物理接口上配置接口上直接进行以上配置,必须通过VLAN虚接口来配置,具体配置如下。

1
2
3
4
5
6
7
8
asa(config)# int vlan 1
asa(config-if)# nameif inside
asa(config-if)# security-level 100
asa(config-if)# ip address 10.1.1.254 255.255.255.0
asa(config-if)# no shut
asa(config-if)# int eO/1
asa(config-if)# no shut
asa(config-if)# switchport access vlan 1
1
2
3
4
5
6
7
8
asa(config)# int vlan 2
asa(config-if)# nameif inside
asa(config-if)# security-level 0
asa(config-if)# ip address 172.16.1.254 255.255.255.0
asa(config-if)# no shut
asa(config-if)# int eO/0
asa(config-if)# no shut
asa(config-if)# switchport access vlan 2

配置ACL

配置ACL有两个作用

  1. 允许入站连接
  2. 控制出站连接的流量

配置标准ACL

asa(config)# access-list acl_name [extended] {permit | deny} protocol src_ip_addr src_mask dst_ip_addr dst_mask [operator port]

配置扩展ACL

asa(config)# access-list acl_name [standrad] {permit | deny} ip_addr mask

将ACL应用到接口

asa(config)# access-group acl_name {in | out} interface interface_ name

例:

image-20191119144145636

允许入站连接:
ASA的默认规则是禁止入站连接,如果要允许入站连接,就需要配置AC L

1
2
asa(config)# access-list out_to_in permit ip host 172.16.1.1 host 10.1.1.1
asa(config)# access-group out_to_in in int outside

这里策略的意思为:设置策略名为out_to_in 内容为允许主机172.16.1.1访问主机10.1.1.1应用于用于入口方向(in)outside接口。

控制出站连接的流量

如果inside区域有多个子网,要禁止子网10.1.1.0/24的流量出站

1
2
3
asa(config)# access-list in_to_out deny ip 10.1.1.0 255.255.255.0 any
asa(config)# access-list in_to_out permit ip any any
asa(config)# access-group in_to_out in int inside

这里策略的意思为:设置策略名为in_to_out 内容为禁止10.1.1.0的网段访问任何网,应用于入口方向(in)inside接口。

配置静态路由

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

asa(config)# route interface-name network mask next-hop-address

例:

image-20191119144332602

1
asa(config)# route outside 172.16.1.0 255.255.255.0 172.16.2.1

3.3 ASA的其他配置

  1. ICMP协议
1
2
asa(config)# access-list 111 permit icmp any any
asa(config)# access-group 111 in int outside
  1. 保存running config配置
1
2
asa# write memory或
asa# copy running-config startup-config
  1. 清除running config的所有配置
1
asa(config)# clear config all
  1. 清除running config中指定命令的配置
1
asa(config)# clear config configcommand [level2configcommand]
  1. 删除startup-config配置文件
1
asa# write erase

4、远程管理ASA

配置ASA的几种方式

image-20191119144540415

4.1 配置Telnet接入

配置允许Telnet接入

asa(config)# telnet {network | ip-address} mask interface_name
例如:配置允许从inside区域内的192.168.0.0/24 使用Telnet接入

1
asa(config)# telnet 192.168.0.0 255.255.255.0 inside

(可选)配置空闲超时时间

1
asa(config)# telnet timeout minutes

4.2 配置SSH接入

a)配置主机名和域名

1
2
asa(config)# host asa802
asa802(config)# domain-name benet.com

b)生成RSA密钥

1
Asa802(config)# crypto kdy tenerate rsa modulus 1024

c)配置允许SSH接入

1
2
asa802 (config)# ssh 192.168.0.0 255.255.255.0 inside
asa802 (config)# ssh 0 0 outside

其他可靠配置

  • 配置空闲超时时间:与配置Telnet类似(单位:分钟)
1
asa802 (config)# ssh timeout 30
  • 配置SSH的版本,默认情况下,SSH同时支持版本1和版本2
1
asa802 (config)# ssh version 2

例:

img

1
2
3
4
5
6
asa(config)# host asa802                              //配置主机名
asa802(config)# domain-name asadomain.com //配置域名
asa802(config)# crypto key generate rsa modulus 1024 //生成RSA密钥对,密钥的长度默认是1024位
asa802(config)# ssh 0 0 outside //允许所有地址通过outside接口连接
asa802(config)# ssh timeout 30 //可选配置 连接超时
asa802(config)# ssh version 2 //可选配置 启用版本2

4.3 配置ASDM接入

启用HTTPS服务器功能(默认端口是:443,允许指定另外的端口:port)

1
asa(config)# http server enable  [port]

配置允许HTTPS接入

1
asa(config)# http {network | ip-address} mask interface_name

指定ASDM映像的位置

1
asa(config)# asdm image disk0:/asdmfile

配置客户端登录使用的用户名和密码,以及权限级别(15为最高级别)

1
asa(config)# username user password password privilege 15

例:

img

1
2
3
4
asa802(config)# http server enable                      //允许从outside接口通过https管理
asa802(config)# http 0 0 outside //允许从outside接口通过https管理
asa802(config)# asdm image disk0:/asdm-602.bin //提供客户端下载ASDM软件
asa802(config)# username benet password cisco privilege 15 //权限15为管理员权限,默认为1

5、多安全区域

5.1 DMZ区域的概念和作用

DMZ(DeMilitarized Zone)称为“隔离区”,也称“非军事化区”
位于企业内部网络和外部网络之间的一个网络区域

5.2 默认的访问规则

DMZ的安全级别介于inside和outside之间,如设置inside区域的安全级别为100,设置outside区域的安全级别为0,则DMZ的安全级别可以设置为20,50或60等。

image-20191119154158696

有六条默认的访问规则

  1. Inside可以访问outside。
  2. Inside可以访问DMZ。
  3. DMZ可以访问outside。
  4. DMZ不能访问inside。
  5. Ouside不能访问inside。
  6. Outdide不能访问DMZ。

5.3 DMZ的基本配置

例:

  • 配置ACL实现R2能够Telnet到R3
  • 使用“show conn detail”命令查看Conn表
  • 使用“show route”命令查看路由表

image-20191119154845682

E0/2接口配置:

1
2
3
4
asa(config-if)# nameif DMZ
asa(config-if)# ip address 192.168.1.254 255.255.255.0
asa(config-if)# security-level 50
asa(config-if)# no shutdown

E0/1接口配置:

1
2
3
4
5
asa(config)# int E0/1
asa(config-if)# nameif inside
asa(config-if)# security-level 100
asa(config-if)# ip add 10.1.1.254 255.255.255.0
asa(config-if)# no shutdown

E0/0接口配置:

1
2
3
4
5
asa(config)# int E0/0
asa(config-if)# nameif outside
asa(config-if)# security-level 0
asa(config-if)# ip add 172.16.1.254 255.255.255.0
asa(config-if)# no sh

配置ACL实现R2能够Ttelnet到R3

1
2
asa(config)# access-list 100 permit ip host 172.16.1.1 host 192.168.1.1
asa(config)# access-list group 100 in int outside

因为R1 R2 R3的配置都太简单了这里省略……,,到此为止R2就可以telnet到R3了

-------------本文结束感谢您的阅读-------------