背景

金融行业由于数据与应用之间连接需要通过防火墙进行控制,在部分票据类业务应用访问数据库时经常出现应用在长时间未连接状态后被防火墙强制断开的情况。在业务断开后,由于应用未实现保活机制,无法自动再次发起连接。最终导致应用报错,需要重启应用进程后才可正常使用。

宁波银行等大型城市商业银行使用PBR机制使得应用和数据库之间的访问不通过防火墙进行连接,从而避免了该情况的产生。

但是在实际操作中,由于安全部署和区域划分的问题,如应用和数据库中间存在思科ASA防火墙时,需要进行如下配置和关联后,可实现数据库长链接的保活机制。

山石、天融信、华为、华三等防火墙可在WEB UI界面进行设置。本文不在进行配置演示。

需要用到的软件及工具

1、SSH连接及串口连接——XShell ,使用的学校版本。
2、Cisco Firepower C2130 ,ASA,Version 9.9(2)32

操作步骤

1、使用show run timeout查看当前系统中全部默认的连接超时设置:

如何远程给ASA防火墙上传IOS asa防火墙策略_运维


从运行显示结果可以看得出,默认超时连接时长为1H,对于连接中最后一次数据包通过防火墙超过1H的连接防火墙将强制断开,在新建连接会话表中拆除维护的连接表。只有应用端重新再次发起会话请求才可进行新的连接。

2、配置访问列表策略,用于匹配流量通过防火墙时进行处理:

access-list dbconnection extended permit tcp host 10.86.86.86 host 10.100.100.10                                                                                                             0 eq sqlnet  
#配置访问源地址为10.86.86.86,目的地址为10.100.100.100,应用为sqlnet Oracle DB的 1521端口的访问策略
access-list dbconnection extended permit tcp host 10.86.86.86 host 10.100.100.10                                                                                                             0 eq ssh
##配置访问源地址为10.86.86.86,目的地址为10.100.100.100,应用为SSH的 22端口的访问策略

3、配置数据类,用于匹配关联访问控制列表:

class-map map-long-connection   #配置名称为“map-long-connection”的数据类
  description Orcle_long_connection #设置描述
  match access-list dbconnection  #设置匹配的访问控制列表为“dbconnection” 为扩展的访问控制列表

4、配置标记数据策略,用于匹配对应的数据类:

policy-map policy-long-connection   #配置名称为“ policy-long-connection”的数据标记策略
 class map-long-connection            #关联引用已经配置数据类“map-long-connection”
  set connection timeout idle 720:00:00 dcd 0:00:30 5   # 设置数据类所匹配策略的连接超时时间为720小时,30天 和 配置死连接检测重试间隔为30秒,多尝试次数为5次。

此处可以根据具体应用和需求进行设置,需要注意的是TCP长链接支持最大的小时数为1193小时,约为50天:#格式为 小时:分钟:秒 ,时间设置越长,消耗设备性能越大,防火墙需要使用资源来维护session表。

5、配置标记数据的策略应用接口,通常仅在数据包通过的DMZ接口和Inside接口应用即可,如果在未明确接口的情况下可在全局模式下应用,但全局模式下应用会更消耗资源:

service-policy policy-long-connection global   #全局接口下启用该长连接策略 
service-policy policy-long-connection interface inside     #内部接口启用该长链接策略
service-policy policy-long-connection interface DMZ      #DMZ接口启用该长链接策略

完整配置命令:

access-list dbconnection extended permit tcp host 10.86.86.86 host 10.100.100.100 eq sqlnet
access-list dbconnection extended permit tcp host 10.86.86.86 host 10.100.100.100 eq ssh
class-map map-long-connection
 description Orcle_long_connection
 match access-list dbconnection
cy-map policy-long-connection
 class map-long-connection
  set connection timeout idle 720:00:00 dcd 0:00:30 5
service-policy global_policy global
service-policy policy-long-connection interface inside
service-policy policy-long-connection interface DMZ

参考文档手册: 思科设备配置手册:
https://www.cisco.com/c/en/us/td/docs/security/asa/asa92/configuration/firewall/asa-firewall-cli/conns-connlimits.pdf 思科Class map命令配置手册:
https://ww.tllswa.com/2014/08/11/class-map-命令-详解及配置/