1、硬件与软件防火墙ASA 简介
软件防火墙
软件防火墙一般基于某个操作系统平台开发,直接在计算机上进行软件的安装和配置。由于客户平台的多样性,软件防火墙需支持多操作系统,如Unix、Linux、SCO-Unix、Windows等,代码庞大、安装成本高、售后支持成本高、效率低。
硬件防火墙
- 硬件防火墙比软件防火墙更有优势,原因有以下两个方面。
- 硬件防火墙功能强大,且明确是为抵御威胁而设计的。
- 硬件防火墙比软件防火墙的漏洞少。
- Cisco硬件防火墙技术应用于以下三个领域。
- PIX 500系列安全设备。
- ASA 5500 系列自适应安全设备。
- Catalyst 6500 系列交换机和Cisco 7600系列路由器的防火墙服务模块(Firewall Services Module, FWSM)。
ASA安全设备
ASA 5500系列
状态化防火墙
状态化防火墙维护一个关于用户信息的连接表,称为Conn表
Conn表中的关键信息
- 源IP地址
- 目的IP地址
- IP协议(例如TCP或UDP)
- IP协议信息(例如TCP/UDP端口号,TCP序列号,TCP控制位)
默认情况下,ASA对TCP和UDP协议提供状态化连接,但ICMP协议是非状态化的
PC访问Web服务器时,状态化防火墙处理的过程如下所述。
- PC发起一个HTTP请求给Web服务器。
- HTTP请求到达防火墙.防火墙将连接信息(如源IP地址和目的IP地址,使用的TCP议.源IP地址和目的IP地址的TCP端口号)添加到Corn表。
- 防火墙将HTTP请求转发给Web服务器.
流量返回时,状态化防火墙处理的过程如下所述。
- Web服务器响应HTTP请求。返回相应的数据流量。
- 防火墙拦截该流量.检查其连接信息。
如果在Corn表中查找到匹配的连接信息。则流量被允许。
如果在Corn表中找不到匹配的连接信息。则流量被丢弃。
2、ASA安全算法
ASA使用安全算法执行以下三项基本操作
- 访问控制列表
基于特定的网络、主机和服务(TCP/UDP端口号)控制网络访问 - 连接表
维护每个连接的状态信息
安全算法使用此信息在已建立的连接中有效转发流量 - 检测引擎
执行状态检测和应用层检测
检测规则集是预先定义的,来验证应用是否遵从每个RFC和其他标准
数据报文穿越ASA的过程
- 一个新来的TCP SYN报文到达ASA,试图建立一个新的连接。
- ASA检查访问列表,确定是否允许连接。
- ASA执行路由查询,如果路由正确,ASA使用必要的会话信息在连接表(xlate和conn表)中创建一个新条目。
- ASA在检测引擎中检查预定义的一套规则,如果是已知应用,则进一步执行应用层检测。
- ASA根据检测引擎确定是否转发或丢弃报文。如果允许转发,则将报文转发到目的主机。
- 目的主机响应该报文。
- ASA接收返回报文并进行检测,查询连接确定会话信息与现有连接是否匹配。
- ASA转发属于已建立的现有会话的报文。
3、ASA的基本配置
配置主机名
1 | ciscoasa(config)# hostname asa |
配置密码
配置特权密码
1
asa(config)# enable password asa802
配置远程登录密码
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
不同安全级别的接口之间互相访问时,遵从如下的默认规则。
- 允许出站(outbound)连接,即允许从高安全级别接口到低安全级别接口的流量通过例如,从inside访问outside是允许的。
- 禁止入站(indound)连接,即禁止从低安全级别接口到高安全级别接口的流量通过。例如,从outside访问inside是禁止的。
- 禁止相同安全级别的接口之间通信。
接口的配置
配置接口的名称
1
Asa(config-if)# nameif name
接口名称为:inside(入站:默认为100) , outside (出站:默认为:0)或其它名称(DMZ:默认为0)
配置接口的安全级别
1
Asa(config-if)#security-level number
安全级别范围为:0-100
3.2 ASA 配置示例
1 | asa(config)#interface e0/1 |
如果ASA的型号是5505则不支持在物理接口上配置接口上直接进行以上配置,必须通过VLAN虚接口来配置,具体配置如下。
1 | asa(config)# int vlan 1 |
1 | asa(config)# int vlan 2 |
配置ACL
配置ACL有两个作用
- 允许入站连接
- 控制出站连接的流量
配置标准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
例:
允许入站连接:
ASA的默认规则是禁止入站连接,如果要允许入站连接,就需要配置AC L
1 | asa(config)# access-list out_to_in permit ip host 172.16.1.1 host 10.1.1.1 |
这里策略的意思为:设置策略名为out_to_in 内容为允许主机172.16.1.1访问主机10.1.1.1应用于用于入口方向(in)outside接口。
控制出站连接的流量
如果inside区域有多个子网,要禁止子网10.1.1.0/24的流量出站
1 | asa(config)# access-list in_to_out deny ip 10.1.1.0 255.255.255.0 any |
这里策略的意思为:设置策略名为in_to_out 内容为禁止10.1.1.0的网段访问任何网,应用于入口方向(in)inside接口。
配置静态路由
ASA支持静态和默认路由,动态路由
配置静态路由
asa(config)# route interface-name network mask next-hop-address
例:
1 | asa(config)# route outside 172.16.1.0 255.255.255.0 172.16.2.1 |
3.3 ASA的其他配置
- ICMP协议
1 | asa(config)# access-list 111 permit icmp any any |
- 保存running config配置
1 | asa# write memory或 |
- 清除running config的所有配置
1 | asa(config)# clear config all |
- 清除running config中指定命令的配置
1 | asa(config)# clear config configcommand [level2configcommand] |
- 删除startup-config配置文件
1 | asa# write erase |
4、远程管理ASA
配置ASA的几种方式
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 | asa(config)# host asa802 |
b)生成RSA密钥
1 | Asa802(config)# crypto kdy tenerate rsa modulus 1024 |
c)配置允许SSH接入
1 | asa802 (config)# ssh 192.168.0.0 255.255.255.0 inside |
其他可靠配置
- 配置空闲超时时间:与配置Telnet类似(单位:分钟)
1 | asa802 (config)# ssh timeout 30 |
- 配置SSH的版本,默认情况下,SSH同时支持版本1和版本2
1 | asa802 (config)# ssh version 2 |
例:
1 | asa(config)# host asa802 //配置主机名 |
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 |
例:
1 | asa802(config)# http server enable //允许从outside接口通过https管理 |
5、多安全区域
5.1 DMZ区域的概念和作用
DMZ(DeMilitarized Zone)称为“隔离区”,也称“非军事化区”
位于企业内部网络和外部网络之间的一个网络区域
5.2 默认的访问规则
DMZ的安全级别介于inside和outside之间,如设置inside区域的安全级别为100,设置outside区域的安全级别为0,则DMZ的安全级别可以设置为20,50或60等。
有六条默认的访问规则
- Inside可以访问outside。
- Inside可以访问DMZ。
- DMZ可以访问outside。
- DMZ不能访问inside。
- Ouside不能访问inside。
- Outdide不能访问DMZ。
5.3 DMZ的基本配置
例:
- 配置ACL实现R2能够Telnet到R3
- 使用“show conn detail”命令查看Conn表
- 使用“show route”命令查看路由表
E0/2接口配置:
1 | asa(config-if)# nameif DMZ |
E0/1接口配置:
1 | asa(config)# int E0/1 |
E0/0接口配置:
1 | asa(config)# int E0/0 |
配置ACL实现R2能够Ttelnet到R3
1 | asa(config)# access-list 100 permit ip host 172.16.1.1 host 192.168.1.1 |
因为R1 R2 R3的配置都太简单了这里省略……,,到此为止R2就可以telnet到R3了