阅读提示|本文大概3654字 阅读需要10分钟
【F5应用交付系列文章之安全加固篇】

近期有部分用户找到我说,马上网络安全专项活动又要开始了,咱们F5负载设备这块需要怎么设置下,保障设备本身的安全性,鉴于最近大家比较关注,于是有了今天的这篇文章,篇幅有限,本文将着重从以下几个方面展开。
设备登陆密码策略加固
设备接入安全:管理接口的SSH及GUI接入源地址限制
默认Cookie会话保持可以反解到Pool Member节点IP问题
设备登陆密码策略加固
部分F5用户目前使用的大多数都是本地认证的方式去管理设备,其实除了本地认证的方式外,f5还支持和第三方AAA设备的集成认证方式,具体包含以下几种认证方式(如有遗漏,欢迎补充):
Remote-Active Directory
Remote-LDAP
Remote-ClientCertLDAP
Remote-RADIUS
Remote-TACACS+
这里和第三方AAA集成方式不展开说,这里着重说下大部分使用本地认证的的用户如何对密码复杂度等相关设置进行配置,在F5 WEB界面下依次点击System > Users > Authentication 显示如下页面:
此处设置密码策略:
Minimum Length:密码长度,默认长度是6,最大支持长度为255
Required Characters:设置密码需要包含的数字、大写字母、小写字母及其他字符串的数量,每一个选项默认值都为0,代表没有设置要求,最大值为127
Password Memory:设置防止用户重用最近的密码而保留的以前的密码的数量,默认值为0,最大值为127
Minimum Duration:设置用户可以更改密码的最小天数,默认是0,最大值为255
Maximum Duration:设置用户密码有效的最大天数。默认值是99999,可以调整值为1-99999
Expiration Warning:设置密码过期提前多少天提醒,默认是7天,可以调整值为1-255
Maximum Login Failures:最大登录失败次数,默认为0,可以调整为0-65535,超过登录失败次数账户被锁定,需要管理员手动解锁用户账户。

设备接入安全:管理接口SSH及GUI接入源地址限制
默认情况下,大部分企业用户IDC内部都有专门的管理网段用于所有网络设备的管理、维护及配置。如非必要,墙裂建议所有用户关闭设备业务口(selfip)的管理权限,防止网络安全专项行动中内部服务器权限被拿下后,攻击者以次服务器为跳板去爆破带内地址(selfip)。
F5上关闭带内管理权限很简单,在F5 WEB界面下依次点击Network > selfips 点击相应的selfip Port Lockdown 选择 Allow None
聊完带内管理的风险之后,是否说关闭了带内管理就万事大吉了?
too Young too Naive !
接下来,我们进一步收紧管理权限,虽然我们现在限制了只能管理网段去连接设备,但是我们不需要说DBA或者服务器管理员也可以管理我们的F5设备,现在限制只有F5的管理员的终端IP去管理F5设备。
管理口SSH接入源地址限制:
限制SSH源地址访问支持管理界面设置和TMSH命令设置:
WEB界面设置方式:在F5 WEB界面下依次点击System > Platform 在User Administration 选项在SSH IP Allow处设置,可以设置网段或者具体的IP地址,比如设置允许192.168.0.0网段和10.10.1.1访问,用以下格式即可,用空格隔开:
192.168.*.* 10.10.1.1复制
命令行下TMSH设置方式:使用Xshell或者Putty连接到F5 管理后台,使用TMSH设置:
ps:通过TMSH方式添加可信的源地址后,还需要删除ALL选项
复制
添加地址格式:tmsh modify sys sshd allow add {<ip_addr> or <ip_range> }
tmsh modify sys sshd allow add { 192.168.0.0/255.255.0.0 10.10.1.1 }
删除地址格式:tmsh modify sys sshd allow delete {<ip_addr> or <ip_range> }
tmsh modify sys sshd allow delete { ALL }
tmsh save sys config
管理口GUI接入源地址限制:
GUI界面只能通过TMSH命令去修改源地址访问,无法通过WEB界面去修改。
命令行下TMSH设置方式:使用Xshell或者Putty连接到F5 管理后台,使用TMSH设置:
ps:通过TMSH方式添加可信的源地址后,还需要删除ALL选项
复制
添加地址格式:tmsh modify sys httpd allow add { <IP address or IP address range> }
tmsh modify sys httpd allow add { 192.168.0.0/255.255.0.0 10.10.1.1 }
删除地址格式:tmsh modify sys httpd allow delete {<ip_addr> or <ip_range> }
tmsh modify sys httpd allow delete { 192.168.0.0/255.255.0.0 10.10.1.1 }
查看添加的允许地址:tmsh list sys httpd allow
tmsh save sys config
默认Cookie会话保持可以反解到Pool Member节点IP问题
上周一用户联系到我说,他们最近找了专业的安全服务商对他们进行渗透测试,在测试过程中发现部分站点返回的F5会话保持Cookie未加密,可以反解到后台服务器的IP地址,这样直接将内部服务器的地址信息暴漏出去了,问我怎么解决?
在说最后如何解决之前,我先介绍下使用Cookie Insert会话保持整业务个访问流程:
客户通过浏览器输入业务地址发起访问
流量到达F5负载均衡器VIP地址
F5根据负载均衡算法选择了一台服务器,并将HTTP Request流量分发到该台服务器
当服务器处理完请求响应回HTTP Response
F5收到服务端的HTTP Response时会在HTTP Header中插入一个Cookie(该cookie值是根据负载分担到服务器IP和端口进行编码得到),然后将数据包发送给客户端浏览器
浏览器再次发起访问并带有f5插入的Cookie ,HTTP Request流量分到达F5 VIP时,F5会反解Cookie计算出之流量分发到的是那台服务器,然后将流量分发给该台服务器,实现会话保持
还原问题现象
以下是测试节点,
VIP地址为10.1.10.100:80
服务器地址为10.1.20.11:80
通过Chrome访问该站点,打开开发者模式,观察Cookie如下:
BIGipServerhttp_pool=185860362.20480.0000
其中Cookie可以看到Pool名称 http_pool 10.1.20.11:80节点编码为185860362.20480.0000
其实Chrome上有提供插件可以直接解处服务器IP地址和端口,如下图所示:
看到这是不是一拍大腿,感觉自己身子凉了一半。
下面我们来通过三种方式解决这个问题:
最简单粗暴的方式,我不用Cookie会话保持,换成基于源地址或者hash方式的会话保持
如果你F5系统版本是运行在11.5.0之后,可以在Cookie会话保持中启用Cookie加密选项,并设置一个Key值,如下图
如果你是运行在11.5.0之前,那么需要在HTTP Profile中添加配置解决,添加需要加密的Cookie名称,并输入一个Key值用于加密,如下所示
接下来我们再次进行测试,浏览器访问http://10.1.10.100,观察其Cookie变化,Cookie为
BIGipServerhttp_pool=!XThziLbhQg3F4CirlqmGyNWiHlkfBFEdjrOOvaYNYpmRCKXLLf89pUEUA9j+tHZFQaAlyVT2B4434Q==
通过这种方式不仅可以加密F5插入的Cookie,也可以加密你服务端返回的Cookie信息
以上关于加固设备提供了若干的建议和指导方式,其实不管F5设备,密码复杂度和管理权限其他的网络、安全设备也是适用的,如果后续大家还想了解更多F5关于安全方面的信息,我会在接下来的应用交付系列中介绍更多的F5安全相关的特性。
相关参考链接:
https://support.f5.com/csp/article/K15497
https://support.f5.com/csp/article/K5380
https://support.f5.com/csp/article/K13309
https://support.f5.com/csp/article/K6917
https://support.f5.com/csp/article/K14784