安全架构设计:网络通信、身份、软件安全

@[TOC]

一、网络通信安全

1、OSI和TCP/IP模型

通常生产环境是禁止ping(ICMP协议)的,所以测试网络是否联通,一般需要用telnet或者nc命令。

2、防火墙

DMZ隔离区通常隔着用户更近,所以整个数据中心最外层的一个区域就是DMZ区。

DMZ是为了解决安装防火墙后外部网络的访问用户不能访问内部网络服务器的问题,而设立的一个非安全系统与安全系统之间的缓冲区。该缓冲区位于企业内部网络和外部网络之间的小网络区域内。在这个小网络区域内可以放置一些必须公开的服务器设施,如企业Web服务器、FTP服务器和论坛等。另一方面,通过这样一个DMZ区域,更加有效地保护了内部网络。因为这种网络部署,比起一般的防火墙方案,对来自外网的攻击者来说又多了一道关卡。

(1)包过滤

当一个数据包过来的时候,防火墙都会查一查报文头,一旦不符合要求就拒绝。

(2)状态检测

状态检测意味着会检测数据来源的曾经的行为,如果行为有问题,就会拒绝。

(3)应用级代理

(4)防火墙实战

默认禁止Ingress和Egress。

高安全域优先:允许高安全域发起请求。

规则:源地址(标签)、源端口、目标地址(标签)、目标端口、通信协议(TCP、UDP、ICMP)、方向(Ingress、Egress)。

3、CDN内容分发网络

(1)内容缓存

通常来说对象存储与CDN之间会设一个规则直通,就是当用户要访问数据的时候,就会利用CDN实现内容缓存。

所以,尽量不要用数据中心的redis、nginx来实现缓存,而是应该把大部分的内容缓存放在用户的浏览器、CDN,这样才离用户更近。 我们所有的数据内容,尽量能在当地的CDN节点上找到一份副本,这样我们可以提供给用户更好的体验。

(2)防御

CDN由于分布各个地区,很轻松的可以应对DDoS大流量的攻击。

4、网络攻击

(1)DoS拒绝服务攻击

攻击方式: 畸形数据包:如超长ICMP、泪滴攻击。 泛洪攻击:SYN泛洪、DHCP泛洪、ARP泛洪、UDP泛洪。 分布式DDoS:僵尸网络、肉鸡攻击。

防御方式: CDN

(2)DNS缓存投毒和劫持

(3)ARP缓存投毒

主机型欺骗、网关欺骗。

(4)重放攻击

5、网络防御

(1)WAF应用防火墙

一旦发现攻击,就会阻挡住。 例如,触发SQL注入会直接返回403Forbidden。 以下的sql,会映射为:select * from widget where id = 1 or 1 = 1,这就是一个SQL注入。 同时WAF还支持邮件、电话等告警。

(2)IDS/IPS入侵检测和防御

IDS部署方式:网络型和主机型。

网络型部署:在网络中有一个设备专门用于抓包、侦听,判断是否有异常行为,并做记录。 主机型部署:部署在服务器中,进行核心系统网络包的侦听。 IDS原理: 特征型:模式匹配、状态匹配。 异常型:统计异常、协议异常、流量异常。 规则型:专家系统、人工智能。

IPS原理: IDS一般只会对消息打一个标签,IPS会将黑客的攻击直接拒绝,或者引诱到一个蜜罐系统。

(3)VPN/IPSEC安全通道加密

PPTP点对点隧道:IP隧道、身份验证确保安全。

L2TP二层隧道:链路层多种隧道供选择(IP、ATM、X.25)。

SSL/TLS VPN:HTTPS传输层隧道技术,保护Web和Mail。

IPSec VPN: IPSec量大实现:AH&ESP

(4)PGP邮件加密

(5)HTTPS网络加密

二、身份认证安全

1、身份认证

密码、PIN、密码短语。 硬令牌、智能卡、USB卡、手机APP。 指纹、声纹、脸纹、虹膜。

2、授权和访问控制 - 访问控制

(1)访问控制原则

知其所需:你不知道"你不知道什么"。 比如说,用户登录失败,不要提示密码错误或者用户不存在,而是提示登录有这种不是详细的错误信息,很大程度上迷惑黑客的攻击。

最小特权:安全管理员禁止访问任何资源。

默认拒绝:白名单策略(ACL、Scope、Role)。 比如说防火墙,只有明确设置了某些ip允许访问时才允许访问,其他的一概拒绝。

(2)访问控制分类

DAC:自主访问控制。 比如说,自己的云笔记的内容。

MAC:强制访问控制。 比如说linux文件权限。

RBAC:角色访问控制。 用户+角色+权限,来控制访问权限。

分散式:各领域/子域独立管理。

集中式:AD、LDAP、Kuberos单点登录。

第三方联合模式:SAML、OAuth2、OpenID。

3、SSO单点登录

如果一家公司,有很多系统,可以使用一套账号来完成所有平台的登录。

(1)Kerberos

非常繁琐

(2)SAML安全断言标记语言

4、OAuth2.0第三方授权

(1)概述

OpenID:一种开放的身份验证标准。 OAuth2.0:OAuth升级版。把一个网站的资源授权给另一个网站的过程。 OpenID Connect(OIDC):OAuth2的一体两面。

OAuth2.0授权4大模式: 授权码模式:完整、严密,第三方认证和授权的最主流实现。 简化模式:令牌用户可见,移动端的常用实现手段。 密码模式:用户名密码暴露给用户。 客户端模式:后台应用之间进行沟通,用户就是客户端。

(2)授权码模式

(3)简化模式

(4)密码模式

(5)客户端模式

(6)token续期

5、JWT token API授权

三、软件安全

1、操作系统安全

(1)安全模型

可信计算基:安全内核、安全边界。 访问控制:贝拉模型 - 下等人不能偷窥上等人。 完整性: 比芭模型 - 别相信下等人。

(2)系统安全威胁

病毒、蠕虫、特洛伊木马、Rootkit后门、僵尸网络、零日攻击、Webshell。

(3)操作系统防御

安装杀毒软件。 升级补丁:防止零日攻击。 合理限制用户、网络、端口、程序、安全基准、不可变基础架构。

(4)杀毒软件检测机制

特征型:模式匹配、指纹检测。 启发型:逻辑评估、人工智能、防止零日攻击。 完整性检查:通过CRC校验确认文件的完整性。 行为阻止:执行代码,监控它和操作系统的交互。 免疫程序:把自己变得像是已经被感染了,博取同情。 沙箱运行:限制病毒和可疑代码的影响。

(5)彩蛋:缓存区溢出 防御

用户输入限制; 补丁和升级; 程序最小权限

2、数据库安全

(1)SQL注入攻击

联合注入:http://server_ip/?id=-1 union select 1, database() 布尔注入:?id=1' and length(database())>1 时间注入:?id=1' and if(length(database())>1, sleep(5), 1) 等其他注入手段。

逃过检测,破坏防御: 大小写变换:and -> And, order -> Order。 双写放过滤:and ->anandd 删除and之后还是and 编码捣乱:空格->%20

(2)SQL注入防御

过滤危险字符:union,sleep 预编译语句:存储过程、JDBC prepareStatement 参数化查询:Hibernate、MyBatis

(3)其他

推理攻击:欺骗实例、数据库分区、单元抑制、噪声扰动。 聚合攻击:数据库分区、视图 拒绝服务:数据库集群、数据流控

3、Web安全

(1)XSS跨站点脚本攻击

反射型XSS:攻击用户浏览器。 存储型XSS:攻击服务器数据库和文件系统。 DOM型XSS:利用DOM文档对象模型的漏洞。

(2)XSS跨站点脚本防御

输入过滤:单引号、双引号、< 、> 等。 编码转换:HTML实体编码、JavaScript编码。 Cookie保护:HttpOnly。

(3)CSRF跨站请求伪造攻击

(4)CSRF跨站请求伪造防御

请求来源验证:HTTP头部字段Referer验证。 CSRF Token:后端验证随机Token。 Cookie保护:设置SameSite,禁止Cookie跨域提交。

相关推荐
豌豆花下猫43 分钟前
Python 潮流周刊#70:微软 Excel 中的 Python 正式发布!(摘要)
后端·python·ai
芯冰乐2 小时前
综合时如何计算net delay?
后端·fpga开发
用户673559885614 小时前
数据驱动,实时监控显威力 —— 淘宝商品详情API助力商家精准营销
后端·api·fastapi
lucifer3114 小时前
线程池与最佳实践
java·后端
用户673559885614 小时前
天猫店铺商品列表API返回值中的商品视频与图文详情
前端·javascript·后端
程序员大金5 小时前
基于SSM+Vue+MySQL的酒店管理系统
前端·vue.js·后端·mysql·spring·tomcat·mybatis
程序员大金5 小时前
基于SpringBoot的旅游管理系统
java·vue.js·spring boot·后端·mysql·spring·旅游
Pandaconda5 小时前
【计算机网络 - 基础问题】每日 3 题(十)
开发语言·经验分享·笔记·后端·计算机网络·面试·职场和发展
程序员大金6 小时前
基于SpringBoot+Vue+MySQL的养老院管理系统
java·vue.js·spring boot·vscode·后端·mysql·vim
customer086 小时前
【开源免费】基于SpringBoot+Vue.JS网上购物商城(JAVA毕业设计)
java·vue.js·spring boot·后端·开源