中小企业平台安全建设如何落地

随着XX领域最近几次重大安全事件发生,各个供应厂商都受到严重的波及,使得我们重新认识安全的重要性,安全建设不得不做好了。

一直以来也想快速做好平台安全,但是都没有实际落地,一个是安全体系建设包含的内容实在太多,另一个是安全建设实际具体落地没有规划,中小企业大部分时间应该都是开发有价值的业务功能, 组织架构里也没有专门的安全部门,不可能给研发团队大块时间来专门搞安全建设。另外,即使客户环境出了重大安全事件,客户也是对这个小领域进行一顿安全整顿,不会关注太长时间,毕竟安全这东西不是日常业务工作内容,这也促使开发商随之放松下来,直至慢慢淡忘。

我们必须清楚这个现状,然后做好一定的安全建设规划,然后从细处着手,一步步在平台建设过程中把平台安全落地, 不要想去一下子做一个高深复杂强大的东西,而是用时间慢慢去堆叠一个个功能,时间长了也是一种技术积累,安全建设也是一样。

下面章节记录了一点粗略的安全建设规划,先形成一个大致目标和思路,细节在实际操作过程中再细化和优化, 其实说落地都谈不上。

1. 安全建设概述

从软件生命周期角度,安全贯穿设计、开发、测试和运维四个阶段,不仅仅是最终的运维阶段。

SDL(SDLC): 是微软提出的一种软件开发安全生命周期管理的一种最佳安全实践,全称为Security Development Lifecycle。

从平台运营角度,安全体系包括系统安全、数据安全、设备安全、网络安全、通信安全、应用安全、软件安全、硬件安全、制度安全等。

系统安全一般包括软件系统安全、硬件系统安全。

数据安全一般包括数据采集、传输、存储、处理、使用的安全。

设备安全一般包括软件安全和硬件安全,也涉及数据安全。

网络安全一般指网络访问、网络传输的安全性,考虑因素有无线网络、有线网络、路由器、交换机、服务器等。

通信安全一般专指网络通讯上的安全性,比如通讯协议是否有漏洞、通道是否加密、数据包是否混淆和加密。

应用安全一般指应用系统业务流程的安全性,比如业务逻辑上设计是否有安全漏洞、数据泄密等问题。

软件安全一般指软件系统的安全性,在云时代软件系统一般部署在机房,用户通过网络远程访问系统接口,那么系统接口的安全性就很重要。

硬件安全一般硬件设备的安全性,比如防水、防破坏、防盗窃等。

制度安全一般指运营过程中流程制度的安全性问题,防止泄密、不安全操作、破坏性操作等。

软件开发活动里一切安全行为都是最终为平台运营安全性服务的,目标就是平台能够安全地运营。

DevSecOps: 是"开发、安全和运营"的缩写,在软件开发生命周期的每个阶段自动集成安全性, 从最初的设计到集成、测试、部署直至软件交付。

2. 设计阶段安全建设

系统架构设计过程中就要考虑安全性,架构师就要设计出一个具有一定安全性的架构出来,对开发团队、测试团队和运维团队都具有指导作用。

总体上要考虑平台的硬件安全、软件安全、网络安全、通信安全、数据安全、应用安全、设备安全、制度安全等。

根据我们平台实际情况,具体考虑的安全因素如下,但不仅仅限于这些方面:

  • 采集设备的硬件安全,部署安全
  • 采集设备的软件系统安全:操作系统安全、账号安全、应用系统安全、漏洞修复、通讯加密、网络访问安全
  • 4G网的网络安全:路由器、交换机、服务器的网络通讯安全,防火墙规则配置,通道加密
  • 视频网的网络安全:路由器、交换机、服务器的网络通讯安全,防火墙规则配置,通道加密
  • 内网的网络安全:路由器、交换机、服务器的网络通讯安全,防火墙规则配置,通道加密
  • 软件系统API服务接口访问安全:访问者有效性和合法性验证,访问安全审计
  • 数据安全:数据传输加密、数据存储加密、数据存储备份、数据存储访问安全
  • 应用安全:业务逻辑安全、业务涉密、用户访问权限、用户访问审计
  • 流程制度安全:运营过程中的流程制度的安全性

3. 开发阶段安全建设

3.1 安全编码

IDE集成环境使用安全插件

开源SonarLint支持Eclipse、VSCode、JetBrains IDE(IntelliJ IDEA, PyCharm, WebStorm, Android Staudio).

利用集成开发环境的安全插件提示进行代码安全修复。

遵循SDL安全编码规范

编码过程中遵循SDL Checklist规范。

遵循OWASP安全编码规范

编码过程中遵循OWASP安全编码规范参考指南。

账号安全
  • 管理员用户名不要取常见的容易猜中的名称,如admin, root等。
  • 管理员密码必须按涉密规范要求,长度10位以上,必须包括数字、字母和特殊字符三种组合, 并且在数据库里不能明文存放,必须hash并加盐。
  • 用户的密码必须按涉密规范要求,长度8位以上,必须包括数字、字母和特殊字符三种组合, 并且在数据库里不能明文存放,必须hash并加盐。
  • 业务系统访问存储系统的密码,长度10位以上,必须包括数字、字母和特殊字符三种组合, 如MySQL、Elasticesearch、Redis、RabbitMQ等等。
  • 不永许任何系统没有登录就直接可访问。
  • 不永许把用户名或密码写死在代码里、配置文件里。
  • 不能把代码和配置发布到github、gitee等任何外部系统。
  • 开发人员引入一个开源系统,开源系统自带的管理系统必须要有登录机制, 用户名和登录密码不能使用默认,不能简单设置,必须和上面描述的规则一样。
API接口安全

禁止免密免登录免认证鉴权的访问,swagger也需要进行访问认证,外部访问采用https协议。

  • API接口要具有用户身份的验证机制,包括合法性和有效性
  • API接口要具有用户鉴权机制,包括模块权限和数据权限
  • API接口要具有应用令牌的验证机制,对一个应用系统访问另一个应用系统进行鉴权
web访问安全

web访问需要采用https方式,支持国密。

数据通道安全

数据传输通道需要加密,或者数据包进行加密, 支持国密。

Java开源框架和组件库进行漏洞修复
  • JDK
  • log4j
  • Spring Boot
  • 所有使用到的开源库,到国家安全中心等发布漏洞的机构定期查询,有漏洞出现则及时打上补丁。

3.2 静态代码扫描分析

对源代码进行质量和安全等方面的静态分析,采用开源SonarQube系统, 把gitlab系统和SonarQube系统结合起来。

3.3 开源库扫描分析

对系统使用的开源库进行扫描分析,防止可疑代码注入,木马植入等, 如采用开源ossf/package-analysis工具。

4. 测试阶段安全建设

待补充。

5. 运维阶段安全建设

5.1 账号安全

操作系统账号安全
  • root账号不能远程登录
  • 坚持最小权限原则,不能把一个普通账号设置的权限和root账号一样大
  • 登录密码必须足够复杂,长度10位以上,必须包括数字、字母和特殊字符三种组合
  • 禁用或删除无用账号, 把系统一些自带的账号注释掉
  • 禁用或删除无用用户组
  • 用户密码不能包含用户名
  • 设置用户密码过期时间, 定期修改密码
  • 密码输错三次,锁定用户5分钟
  • 禁止普通用户su到root用户,只允许指定的用户su到root用户
  • 配置证书密钥登录
应用系统账号安全
  • 管理员用户名不要取常见的容易猜中的名称,如admin, root等。
  • 管理员密码必须按涉密规范要求,长度10位以上,必须包括数字、字母和特殊字符三种组合。
  • 用户的密码必须按涉密规范要求,长度8位以上,必须包括数字、字母和特殊字符三种组合。
存储系统账号安全
  • 不永许未登录直接访问
  • 登录密码必须按涉密规范要求,长度10位以上,必须包括数字、字母和特殊字符三种组合。
消息队列账号安全
  • 不永许未登录直接访问
  • 登录密码必须按涉密规范要求,长度10位以上,必须包括数字、字母和特殊字符三种组合。
缓存系统账号安全
  • 不永许未登录直接访问
  • 登录密码必须按涉密规范要求,长度10位以上,必须包括数字、字母和特殊字符三种组合。
第三方系统账号安全
  • 不永许未登录直接访问
  • 登录密码必须按涉密规范要求,长度10位以上,必须包括数字、字母和特殊字符三种组合。

5.2 API接口访问安全

  • 不永许未登录直接访问
  • swagger界面要关闭, 或者提供登录认证机制

5.3 Web系统访问安全

  • 不永许未登录直接访问
  • 外部用户必须采用https协议进行访问
  • 最好采取Ukey+CA证书进行登录认证

5.4 防火墙安全

有一个定时任务在监测防火墙规则的启用, 但要注意以下几点:

  • 定时任务的频率,太短影响运维任务执行,太长给黑客入侵给足空间;
  • 定时任务内容的更新,新增规则是否及时写入脚本;
  • 定时任务发现未上防护措施,应发告警信息并写入日志,管理人员应判别是正常运维的善后处理未完成,还是系统被入侵规则被改变。前者要对多次违规者批评教育,避免技术人员依赖监控脚本,后者是及时发现入侵及时处理。

5.5 服务器漏洞扫描

对开发环境和线上环境的服务器群定期进行漏洞扫描,尽量多组合漏扫工具,有针对性进行扫描,至少对一下目标进行扫描:

  • Linux操作系统,以及附带的系统软件,如OpenSSL、SSH等;
  • 所有Web系统,以及相关软件,如SpringMVC/Springboot开发的系统、Go开发的API系统、Python开发的API系统等;
  • 所有引入的开源系统,如docker、hadoop、kafka、rabbitmq、redis、elasticsearch、minio、seaweedfs、milvus、nginx、traefik、consul等;
  • 所有自己开发的业务系统.

在开发环境搭建一个全真的覆盖线上环境配置的环境,实时或定期进行漏扫,发现问题及时全网修复。

5.6 服务器安全审计

  • 对Linux系统日志进行审计
  • 监控所有Linux系统登录和注销
  • 跟踪用户帐户和组的所有更改
  • 监控在网络中插入或取出可移动设备的所有实例
  • 跟踪所有sudo命令执行
  • 识别在每个严重性级别发生的所有事件,包括关键事件
  • 跟踪一些其他事件,例如,会话连接、NFS安装等等

5.7 数据安全备份

关键数据进行备份,并进行物理隔离:

  1. 用专门一台机器作为备份机,进行热备份,或短频率备份。备份机坚持最小软件安装原则,仅仅备份功能,只有它向其它服务器发起连接,不提供其它任何端口让外部链接, 减少被攻击的可能性。
  2. 定期进行冷备份,从备份机复制到磁盘或光盘进行保存,比如1个月一次。

关键数据包括MySQL里的一些数据表,consul里的配置文件, 系统源代码和文档等,非关键数据就是不断增长的采集日志数据,这种数据量太大且不停增长。

线上平台关键数据和开发环境里关键数据都要做好备份措施。

相关推荐
用户962377954481 天前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机2 天前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机2 天前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户962377954482 天前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star2 天前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户962377954482 天前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
cipher3 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
一次旅行6 天前
网络安全总结
安全·web安全
red1giant_star6 天前
手把手教你用Vulhub复现ecshop collection_list-sqli漏洞(附完整POC)
安全
ZeroNews内网穿透7 天前
谷歌封杀OpenClaw背后:本地部署或是出路
运维·服务器·数据库·安全