本文目录导读:

“默认安全”是安全设计中的一个核心原则,全称是 Secure by Default,它指的是:在产品、系统或功能交付时,其初始状态(默认配置)就是最安全的,而不是要求用户自行进行复杂的设置才变得安全。
开箱即安全”,如果用户什么都不做,系统也应该是安全的,用户如果想降低安全性以获得便利,必须主动、有意地去更改设置。
以下是设计“默认安全”的具体思路和方法,分为几个关键层面:
核心设计理念
- 最小权限原则:系统默认只授予完成其核心任务所必需的最小权限,比如新建一个用户账户,默认只有普通用户权限,而不是管理员权限,需要更高权限时,用户必须显式申请(如UAC弹窗)。
- 特供失败(Fail Securely):当系统发生错误、异常或崩溃时,默认进入最安全的状态,防火墙在规则冲突或重启时,默认拒绝所有连接,而不是允许所有连接。
- 全面失败(Fail Closed):与安全相关的操作,如果无法明确判断是否允许,则默认禁止,一个访问控制列表,如果找不到匹配的规则,默认拒绝访问。
- 禁止列出(Deny by Default):这是最核心的规则,系统只允许明确允许的东西,其他所有东西都是禁止的,典型的例子就是白名单:只允许特定的IP、应用、功能通过,其他全部拒绝。
具体实施策略(针对不同场景)
用户账户与权限
- 初始账户:不要创建预设的管理员账户(如
admin、root),首次使用强制用户创建一个普通用户,然后通过提权的方式(如sudo或 UAC)来执行管理操作。 - 弱口令/无口令:绝对禁止,必须要求用户设置一个符合复杂度要求的强密码才能完成安装或首次登录,不要默认用
password或123456。 - 远程访问:默认关闭 SSH、RDP 等远程管理服务,如果需要,让用户手动开启,并且强制要求使用密钥或强密码,甚至绑定IP白名单。
- 自动登录:系统默认关闭自动登录功能,需要用户主动设置。
服务与网络
- 不必要的服务:安装系统时,默认只安装最核心的服务,所有非必需的服务(如打印服务、蓝牙服务、Web服务器)默认禁用,用户需要时再去安装或启动。
- 监听端口:系统监听的服务端口数最小化,默认情况下,除了必要的系统服务(如 DHCP 客户端、DNS 解析),所有对外监听端口都是关闭的。
- 防火墙:默认配置为“入站连接全部拒绝,出站连接允许”,用户如果需要对外提供特定服务(如网页),必须手动添加一个允许入站规则。
- 网络共享:默认关闭文件共享、打印机共享、网络发现等功能。
应用与数据
- 插件与扩展:浏览器默认禁用所有插件(Flash、Java Applet等不安全的),并且默认不安装任何第三方扩展,用户需要时手动添加。
- 宏与脚本:Office 软件默认禁用所有宏,并且对来自互联网的文档启用“受保护的视图”(只读模式)。
- 数据加密:默认启用全盘加密(如 BitLocker、FileVault),或者对用户的关键数据文件夹(如 Documents、Desktop)进行加密,用户必须设置恢复密钥或密码。
- 自动更新:默认开启自动安全更新,用户如果为了兼容性等原因需要关闭,必须手动操作。
隐私与权限
- 应用权限:新安装的 App 默认不授予任何敏感权限(如访问相机、通讯录、定位、存储空间),用户在使用时,按需授予单次权限。
- 诊断数据:默认仅发送“必要”诊断数据(用于安全更新和功能改进),不发送“完整”的使用数据,用户需要手动开启完整数据分享。
- 剪贴板与后台活动:默认阻止 App 访问剪贴板内容或后台运行。
用户体验平衡(避免“安全疲劳”)
完全追求“默认安全”可能会带来极差的用户体验,用户可能因为过于繁琐而放弃使用或强行关闭安全功能,设计时需要平衡:
- 合理的一步操作:虽然要安全,但不要做成“迷宫”,比如设置密码,可以提供密码强度指示器,并允许使用密码管理器自动生成的强密码,而不是必须记忆复杂的混合字符。
- 清晰的引导和说明:当用户第一次面临一个安全决策(比如是否允许App访问位置)时,用简单易懂的语言解释“允许”和“拒绝”的后果。“允许后,该 App 可以获取你的精确位置,不访问位置,导航功能可能无法使用。”
- 灰度设计(安全级别):提供几个预设的安全级别(如“高”、“中”、“低”),每个级别对应一组默认配置,对于普通用户,推荐“中”或“高”,对于高级用户,提供“自定义”选项。
- 时间窗口与权限生命周期:权限授予不要永久有效,授予 App “本次”相机权限,后台任务权限只持续10分钟等,这样既安全,又不打断用户使用流程。
- 清晰展示变更后果:当用户尝试降低安全级别时(比如关闭防火墙),系统应该明确警告:“关闭防火墙后,你的设备将更容易受到来自互联网的攻击,你是否确定?”
一个“默认安全”设计的检查清单
- [ ] 初始用户:不是管理员,需要提权。
- [ ] 密码:强制设置强密码,无默认密码。
- [ ] 服务:仅运行核心必需服务。
- [ ] 网络:入站全拒,出站默认允许。
- [ ] 权限:应用无默认权限,需显式授予。
- [ ] 更新:自动安全更新开启。
- [ ] 加密:至少对敏感数据启用加密(或提供明确向导)。
- [ ] 日志与审计:默认开启关键安全事件的日志记录(如登录失败、权限提升)。
- [ ] 恢复机制:设有安全恢复流程,如忘记密码的重置方式,确保不会被恶意利用。
核心思想是:安全是默认项,而不是可选项。 用户失去安全(降低安全级别)需要付出比获得安全(开启安全功能)多得多的努力。