简介
不对外提供服务是最安全的。
安全是基于信任。如果信任失败了,则没有安全。比如你给一个ip加白名单,结果这个ip对你发动了安全攻击。
在非常明确需要提供服务的时候才对外提供服务,即白名单。其他的全部禁止。
对外提供服务要在控制和管理下。
思路
防御的过程是一个链条,任何一个节点上都要防御,否则都会出问题,防御也就失败了。
每个节点上都包含这几个方面
- 定位。定位这个节点是否有存在安全问题。
- 监控。监控这个节点的安全状态,即当前是否处在安全的状态。
- 自动处理机制。自动解决安全问题,减少人为的干预。
- 解决问题的办法(文档)。减少人为解决问题的成本。
后面的文章也是根据流程,一个节点一个节点来组织
安全类型
包括但不仅限于下面的几种类型。下面的这些,仅仅是基于我们团队使用的技术而言。如果有使用更多的技术可以往里面补充,比如说:防ddos的第三方服务。
网络
- 硬件防火墙
- 路由
- 软件防火墙
系统
- 用户
- 权限
应用
软件
能独立对用户提供服务。
- 代理(nginx)
- web容器(tomcat)
- 缓存(redis)
- 数据库(mysql)
框架
只是解决重复的问题,但是不能独立对用户提供服务。
- javaweb框架(nutz)
- 数据源(druid)
语言
解析真实现象的手段
- java
- php
浏览器
现在是互联网时代,服务器的防御手段越来越完善,反而很多攻击手段转向了对浏览器。所以浏览器的安全是很重要的。
防御流程
这个流程,根据不同的关注度是不一样的,而且有一些其他的节点没有标明。这里暂时没有画出其他的网络设置。
只是根据现在的架构画的防御图。不同架构防御图也不同。
只体现防御关注的流程,并不代表所有的流程。比如有可能在代理后面直接使用缓存。
暂时也没有考虑分布和集群的问题。
重复问题
如果有重复的问题,交给更高层节点(流程里的前一个节点)去解决。比如说对ip的限制,优先交给防火墙解决,只有防火墙解决不了的问题(http浏览器的ua判断),才从nginx代理级别去处理。
文档的统一结构
- 场景。就是这个技术想解决的问题。
- 方案。具体解决这个问题的思路
- 验证方法。通过什么办法验证这些场景已经生效并且是安全的。
更高目标畅想
通过自动化运维来解决绝大部分的安全问题。其实就是现在阿里云做的事情。。。。。
- 统一的服务器自动化安全环境搭建
- 统一的软件自动化安全搭建
- 统一的安全监控及恢复服务
参考资料
- 《白帽子讲Web安全》