72 个网络应用安全实操要点,全方位保护 Web 应用的安全( 三 )


51、限制外部网络连接
攻击者通常需要建立一定的反向通信渠道来建立操控渠道或窃取数据 。此外,一些漏洞也是需要外部网络连接才会被发现、被利用 。
因此,不能让应用随便访问外部网络,包括 DNS 。试下在服务器运行命令,如果运行成功,则说明你没有对外部网络连接做出适当的限制 。如何处理此类问题,一般则取决于基础设施 。
针对外部的 TCP/UDP/ICMP 连接,一般可以通过以下方式禁用:
DNS 处理起来稍微麻烦一点,我们通常需要允许对一些 hosts 的访问 。
52、跟踪 DNS 记录,防止子域名劫持
子域名劫持发生场景举例如下:
【72 个网络应用安全实操要点,全方位保护 Web 应用的安全】1.假如我们拥有一个域名 ;2.针对一次促销活动,我们买了另一个域名,然后创建了一个别名从映射到 ;3.这次促销活动结束后,域名也到期了;4.但是,从到的别名映射仍存在;5.如果有人购买了这个到期的域名,那么便可以直接指向该域名;6.如果攻击者在域名下提供一些恶意内容,那么便可以通过域名直接访问到;因此,需要随时留意你的 DNS 记录 。如果需要处理的类似情况较多,强烈建议你做一个自动监控方案 。
2.3 架构 53、创建内部 API 用来访问数据源
对连接互联网的网络应用程序不应该太过于信任 。例如,不应允许它进行数据库直连 。否则,当有人攻破应用程序时,整个数据库都将面临威胁 。
相反,我们应该搭建多组件组成的架构,例如:
54、内部连接也需加密和验证
不要盲目相信内网的安全性,有很多方法可以攻破它 。对于系统间的访问,全部采用 TLS(也就是 HTTPS)进行加密,最好在网络和系统两个层次对连接进行鉴权 。
55、对敏感信息集中管理
如果没有采用合适的敏感信息管理方案,就很难保持授权的短期性化、可审计性和秘密性 。因此,建议采用Vault 一类的工具来集中管理密码、加密 key 等类似信息 。
2.4 监控 56、收集,分析,报警
集中收集日志到一个独立系统,比如 SIEM(安全信息和事件监控系统) 。在这个系统中,可以在一些表征脆弱性、攻击的事件发生时进行报警 。当严重威胁发生时,可以立即通知相关人员 。
57、收集系统安全事件
最重要的日志来源可能就是系统自身了 。当有可疑行为发生时,系统应能引发异常,记录事件,可能的话,甚至可以自动封锁可能带来问题的用户或IP地址 。常见可疑行为包括:
58、收集运行时安全日志
使用运行时安全监控工具如 Falco 来对异常系统访问进行检测 。如果采用了,那么 Falco 就特别有用 。远程也可以对日志进行收集和监控 。
59、收集 / 日志
假如我们制定了策略防止向外部的连接,但系统忽然向外部某个网站(例如 )发起 HTTP 请求,那就需要立刻引起关注 。又或者你的系统尝试访问 /etc/ 。这两种情况都表示有人已经发现了我们系统中的漏洞 。
60、收集 Web 服务器事件
对 Web 服务器软件,至少要对访问日志和错误日志进行收集,收集后发送到集中式的日志服务器 。在突发事件响应时,这将辅助我们快速理清时间线 。
61、收集网络应用程序防火墙(WAF)日志
如果你像上文推荐使用了网络应用程序防火墙(WAF),那么也对这个日志进行收集 。但不用针对这个日志设置报警,因为它基本上会收到来自互联网各种各样的问题,而且不部分是你不用担心的 。
2.5 事件响应 62、制定应对计划
一旦对我们的系统进行了监控和加固,攻击者将难以快速定位系统漏洞,即使最终发现,我们也能快速了解情况 。