一、ASA(状态化防火墙)安全设备介绍:
Cisco硬件防火墙技术应用领域:
PIX 500 系列安全设备。 ASA 5500系列自适应安全设备。 Catalyst 6500 系列交换机和Cisco 7600 系列路由器的防火墙服务模块。
Cisco ASA 5500 系列自适应安全设备提供了整合防火墙、入 侵保护系统(IPS)、高级自适应威胁防御服务,其中包括应用安全和简化网络安全解决方案的V P N服务。 二、ASA状态化防火墙的安全算法:
状态化防火墙维护一个关于用户信息的连接表,称为Conn表 Conn表中的关键信息如下: 源IP地址 目的IP地址 IP协议(例如TCP或UDP) IP协议信息(例如TCP/UDP端口号,TCP序列号,TCP控制位)
在上图中,当PC访问web服务器时,状态化防火墙处理的过程如下:
1、 PC发起一个HTTP请求给web服务器;
2、HTTP请求到达防火墙,防火墙将链接信息(如源IP地址和目的IP地址、使用的TCP协议、源IP地址和目的IP地址的TCP端口号)添加到conn表;
3、 防火墙将HTTP请求转发给web服务器;
流量返回时,状态化防火墙处理的过程如下:
1、web服务器相应HTTP请求,返回相应的数据流量;
2、防火墙拦截该流量,检查其连接信息;
如果在conn表中查找到匹配的连接信息,则流量被允许。 如果在conn表中找不到匹配的连接信息,则流量被丢弃。 ASA使用安全算法执行以下三项基本操作:
1、访问控制列表:基于特定的网络、主机和服务(TCP/UDP端口号)控制网络访问。
2、连接表:维护每个连接的状态信息。安全算法使用此信息在已建立的连接中有效的转发流量。(个人理解为:ASA允许内网客户端主动向外网建立连接,但外网不允许主动向内网建立连接,也就是说,要实现流量通信,必须是内网用户主动发起连接的。)
3、检测引擎:执行状态检测和应用层检测。检测规则集是预先定义的,来验证应用是否遵从每个RFC和其他标准。
数据报文穿越ASA的过程如下所示:
1、一个新来的TCP SYN报文到达ASA,试图建立一个新的连接;
2、ASA检查访问控制列表,确定是否允许连接;
3、ASA执行路由查询,如果路由正确,ASA使用必要的会话信息在连接表(XLATE和CONN)中创建一个新条目;
4、ASA在检测引擎中检查预定义的一套规则,如果是已知应用,则进一步执行应用层检测;
5、ASA根据检测引擎确定是否转发或丢弃报文,如果允许转发,则将报文转发到目的主机;
6、目的主机相响应该报文;
7、ASA接收返回报文并进行检测,在连接数据库中查询连接,确定会话信息与现有连接是否匹配;
8、ASA转发属于已建立的现有会话的报文;
ASA的应用层检测通过检查报文的IP包头和有效载荷的内容,对应用层协议流量执行深层检测,检查应用层协议是否遵守RFC标准,从而检查出应用层数据中的恶意行为。
三、ASA接口的概念:
1、ASA的一个接口通常有两种名称:
①物理名称:与路由器接口的名称类似,如Ethernet0/0可以简写成E0/0,通常用来配置接口的速率、双工和IP地址等。
②、逻辑名称:用于大多数的配置命令,如配置ACL、路由器等使用的命令中都用到逻辑名称。逻辑名称用来描述安全区域,如通常用inside表示ASA连接的内部区域(安全级别高),用outside表示ASA连接的外部区域(安全级别低)。
2、接口的安全级别:
每个接口都有一个安全级别,范围是0~100,数值越大,安全级别越高。一般配置接口为inside(内网接口)时,将其安全级别设置为100,为outside(外网接口)时,将其安全级别设置为0,为DMZ(隔离区)时,安全级别介于inside和outside之间即可。
不同安全级别的接口之间相互访问时,遵从以下默认规则:
①允许出站连接:就是允许从高安全级别接口到低安全级别的流量通过。比如说从inside访问outside是允许的。
②禁止入站连接:就是禁止从低安全级别接口到高安全级别接口的流量通过。比如说从outside访问inside是禁止的。
③禁止相同安全级别的接口之间通信。
四、DMZ的概念和作用:
DMZ称为隔离区,是位于企业内部网络和外部网络之间的一个网络区域。在这个网络区域内可以放置一些必须公开的服务器、如web服务器、FTP服务器和论坛等。示意图如下: DMZ中放置一些不含机密信息的共用服务器,这样来自外网的访问者也可以访问DMZ中的服务,但不能访问内网的公司机密信息。即使DMZ中的服务器收到攻 击,也不会对内网的机密信息造成影响,所以,可以通过DMZ区域有效的保护内网环境。
当存在DMZ区域时,默认的访问规则如下: 上图中默认遵循的访问规则如下:
inside可以访问DMZ和outside; DMZ可以访问outside但不允许访问inside; outside不能访问DMZ和inside,不过通常会配置ACL,让outside可以访问DMZ,若不然,DMZ就没有存在的意义了。 五、ASA的基本配置:
配置主机名:
ciscoasa> en Password: #默认特权密码为空,直接回车即可。 ciscoasa# conf t ciscoasa(config)# hostname asa 配置特权密码: asa(config)# enable password 123.com #将特权密码配置为123.com
配置远程登录密码(在使用Telnet或SSH时需要输入的密码):
asa(config)# passwd 2019.com #将远程连接时的密码设置为2019.com
配置接口名称和接口安全级别:
asa(config)# in e0/0 #进入e0接口 asa(config-if)# nameif inside #将e0接口定义为inside
INFO: Security level for “inside” set to 100 by default. #系统提示,请 将inside接口的安全级别配置为100
asa(config-if)# security-level 100 #将inside接口的安全级别配置为100 如果ASA的型号是5505,则不支持在物理接口上直接进行以上配置,必须通过VLAN虚接口来配置,具体如下:
asa(config)#int vlan 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 shut 查看conn表:
asa#show conn detail
配置ACL: 在ASA上配置ACL有两个作用,一是允许入站连接,二是控制出站连接的流量。 需要注意的是,路由器上的ACL使用反码,而ASA上的ACL使用正常的掩码,另外,标准ACL过滤流量时不能应用到接口,它应用在其他场合,如远程访问V P N中分离隧道的配置。
允许入站连接的实例:
asa(config)# access-list out_to_in permit ip host 172.16.1.1 host 10.1.1.1 #允许外网主机172.16.1.1访问内网主机10.1.1.1,out_to_in为ACL组名。
asa(config)# access-group out_to_in in int outside #将组名为out_to_in的ACL应用在outside接口 控制出站连接的流量:
asa(config)# access-list in_to_out deny ip 10.0.0.0 255.0.0.0 any #拒绝 内网10.0.0.0网段 访问外网所有网段。 asa(config)# access-list in_to_out permit ip any any #并允许其他所有 流量通行,因为ACL有隐含的拒绝语句,所以配置ACL时,一般都需要允许所有流量 asa(config)# access-group in_to_out in int inside #应用在内网接口 配置静态路由:
asa(config)# route outside 172.16.0.0 255.255.0.0 10.0.0.1 #去往外网 172.16.0.0网段的流量下一跳为10.0.0.1
asa(config)# route inside 192.168.1.0 255.255.255.0 192.168.2.1 #去往内网 192.168.1.0网段的流量下一跳为192.168.2.1 其他配置
1、ICMP协议: 默认情况下,禁止ICMP报文穿越ASA是基于安全性的考虑。有时候为了方便调试,可以配置暂时允许ICMP应答报文穿越ASA。
ciscoasa(config)# access-list 111 permit icmp any any #定义ACL ciscoasa(config)# access-group 111 in int outside #应用到outside接口 2、其他配置命令: 写在前面,一切皆可no,也就是说当配置错一条命令后,可以在原先的配置命令前加no即可删除配置错的那条命令
ciscoasa# write memory #保存running configuration配置 到startup configuration
或者 ciscoasa# copy running-config startup-config #保存running configuration 配置到startup configuration
ciscoasa(config)# clear configure all #清除running configuration的所有配置
ciscoasa(config)# clear configure access-list #清除所有acces-list命令的配置
ciscoasa(config)# clear configure access-list in_to_out #只清除access-list in_to_out 的配置
ciscoasa# write erase #删除startup-config配置文件 六、远程管理ASA:
ASA支持三种主要的远程管理接入方式:Telnet 、ssh和ASDM。
1、Telnet配置实例:
由于使用Telnet远程管理是不安全的,所以一般禁止从外部接口使用Telnet接入,而只允许在内网使用Telnet。 1)、配置允许从inside区域内的192.168.0.0/24网段使用telnet接入,命令如下:
ciscoasa(config-if)# telnet 192.168.0.0 255.255.255.0 inside
或者允许单个主机Telnet防火墙(两者根据需要二选一即可):
ciscoasa(config)# telnet 192.168.0.1 255.255.255.255 inside
2)、配置空闲超时时间为30分钟,命令如下:
ciscoasa(config)# telnet timeout 30
至此,即可实现Telnet远程管理。
2、配置SSH接入:
1)、配置主机名和域名,因为在生成RSA密钥对的过程中需要用到主机名和域名,(主机名的配置可省略)
ciscoasa(config-if)# host aaa #配置主机名
aaa(config)# domain-name abc.com #配置域名
aaa(config)# crypto key generate rsa modulus 1024 #指定modulus的大小 为1024位,大小可以为512位、768位、1024位或2048位, 表示生成的RSA密钥的长度
aaa(config)# ssh 192.168.1.0 255.255.255.0 inside #允许内网1.0的网段 SSH接入
aaa(config)# ssh 0 0 outside #允许外网任何主机SSH接入
aaa(config)# ssh timeout 30 #配置超时时间为30分钟
aaa(config)# ssh version 2 #启用SSH的版本2,该命令为可选, 有版本1和版本2,至于区别…不过是安全机制不一样 配置SSH接入完成后,可以在outside区域内的主机上使用SecureCRT或putty等工具登录ASA的outside接口,注意ASA默认使用用户名为pix,密码为使用password命令设置的密码。