跳转至

网络安全

网络安全概述

  • 应用层是安全边界的重要组成部分,存在巨大漏洞,仅依赖网络层防护(防火墙、SSL、IDS、系统加固)无法阻止或检测应用层攻击。
  • 攻击网络系统的动机和目的
    • 纯粹炫耀黑客技术
    • 增加自己网站点击率
    • 加入木马和病毒程序
    • 发布虚假信息获利
    • 窃取用户资料及应用数据
    • 政治性的宣传
    • 破坏性攻击
  • 安全漏洞产生原因
    • 客观原因
      • 网络系统的复杂性:操作系统、Web 服务器软件、商业软件、Web 应用程序自身均可能存在漏洞。
      • 漏洞的修补困难:第三方软件补丁发布滞后于漏洞利用,Web 应用漏洞检测与修补耗时费力。
    • 主观原因
      • 密码管理不当:合格密码需 8 位以上并定期更换。
      • 不安全的配置:权限控管不当、信息泄露
      • 漏洞修补:未定期漏洞扫描、未及时更新软件、新应用上线前缺乏安全测试。
      • 上网控制:钓鱼、木马、间谍软件。
      • 开发人员更注重功能实现、性能、开发进度等,忽视安全编码,且存在代码量大、人员变更频繁、培训不足等问题。
  • 网络安全视图

  • 破坏与损失

网络系统常见漏洞

注入(Injection)

  • 核心:以 SQL 注入为主,攻击者通过发送 SQL 语句获取信息、篡改数据库、控制服务器
  • 流行性:常见
  • 危害性:严重
  • 风险代码:使用 Statement 拼接 SQL 语句,混淆“代码”与“数据”。
  • 防范措施:
    • 检查并转义用户输入的特殊字符(';-- 等),拒绝已转义输入;
    • 使用参数化查询(PreparedStatement)、SQL 存储过程;
    • 遵循最小权限原则,禁用 SA 等高权限账号;
    • 防止错误页面泄露敏感信息。

跨站脚本(Cross-Site Scripting, XSS)

  • 核心:攻击者通过向 URL 或其他提交内容插入脚本,实现客户端执行
    • 跨站:攻击者制造恶意脚本,并通过 Web 服务器转发给普通用户客户端,在其浏览器中执行
    • 脚本:Web 浏览器可以执行 HTML 页面中嵌入的脚本命令,通常为 JavaScript
    • 攻击:可能导致盗取用户身份、拒绝服务、篡改网页、模拟用户操作、传播蠕虫等
  • 流行性:极广
  • 危害性:中等
  • 分类:
    • 存储型:恶意脚本存于服务器,任意用户访问包含该恶意代码的页面时执行。
    • 反射型:恶意脚本通过 URL 反射,服务器响应时包含该脚本,用户点击链接时执行。
    • DOM 型:客户端 JavaScript 对 DOM 的处理不当,修改了 DOM 树,导致恶意脚本执行。
  • 防范措施:
    • 过滤:可能导致意外结果,有时需要多次过滤,需注意多个过滤的先后顺序
    • 输入编码:最佳
    • 输出编码:工作量大,但可以处理输入编码无法处理的已入库数据
    • 用户安全加固:小心点击不明链接,对浏览器进行安全加固,如禁止 ActiveX

失效的验证和会话管理(Broken Authentication and Session Management)

  • 核心:攻击者通过嗅探、暴力破解等获取用户凭证或 Session ID
  • 流行性:常见
  • 危害性:严重
  • 防范措施:
    • 强密码策略
    • 登陆出错时不给过多提示信息
    • 登录页面加密,多次登录失败短时锁定账号
    • 验证成功后更换 Session ID(128 位以上随机值)
    • 会话闲置超时
    • 保护 Cookie,设置 Secure/HttpOnly 标记
    • 不在 URL 显示 Session ID

不安全的直接对象访问(Insecure Direct Object References)

  • 核心:URL 或网页暴露内部资源标识(文件名、路径、数据库关键字等),若未验证权限,可能导致攻击者未授权访问
  • 流行性:常见
  • 危害性:中等
  • 防范措施:
    • 避免在 URL 或网页中直接引用内部文件名或数据库关键字,用自定义映射名称替代直接对象标识
    • 锁定目录权限,设置访问权限
    • 验证用户输入和请求,拒绝含 ./../ 的请求。

跨站请求伪造(Cross-Site Request Forgery, CSRF)

  • 核心:攻击者构造恶意请求,诱骗已登录用户触发,冒充用户操作
  • 流行性:广泛
  • 危害性:中等
  • 与反射型 XSS 区别:
    • CSRF 攻击目标是网站,利用网站对用户浏览器的信任,以用户名义执行特定操作,将恶意请求发送到目标网站,恶意代码存放在攻击者自己的网站或第三方页面上;
    • XSS 攻击目标是用户浏览器,利用用户对网站的信任,恶意代码隐藏在目标网站的 URL 或页面中,在用户浏览器中执行。
  • 防范措施:
    • 避免 URL 明文显示操作参数
    • 使用同步令牌(Synchronizer Token):服务器生成随机且不可预测的令牌(恶意网站无法获取),用户提交请求时表带会自动附带这个令牌,服务器检查是否匹配以验证请求有效性
    • 检查请求 Origin/Referer Header,确保来自合法域名

不正确的安全设置(Security Misconfiguration)

  • 核心:管理员配置疏忽,导致攻击者非法获取信息、篡改内容或控制系统
  • 流行性:常见
  • 危害性:中等
  • 示例:未安装补丁、允许目录浏览、匿名上传文件、使用默认账号密码、错误页面泄露 call stack。
  • 防范措施:
    • 及时安装软件补丁
    • 最小化安装(仅保留必要组件)
    • 不在 Web/SQL 服务器上运行其他服务,数据不放在系统盘上
    • 严格设置文件/文件夹权限,禁用不必要服务
    • 不使用默认路径和预设账号,遵循最佳安全实践

不安全的加密存储(Insecure Cryptographic Storage)

  • 核心:重要信息未加密、加密强度不足或密钥存储不当
  • 流行性:不常见
  • 危害性:严重
  • 示例:明文存储银行卡号/密码、使用自制加密算法或 MD5/SHA-1 低强度算法、密钥与加密信息同存。
  • 防范措施:
    • 对所有重要信息进行加密
    • 重要信息采用 AES、RSA 等高强度算法加密
    • 密码用 SHA-256 等健壮哈希算法处理
    • 密钥与加密信息分开存储,严格控制访问权限

URL 访问限制缺失(Failure to Restrict URL Access)

  • 核心:未公开的“隐藏” URL 缺乏访问控制,被攻击者猜测或泄露后非法访问
  • 流行性:不常见
  • 危害性:中等
  • 防范措施:
    • 所有页面(含未公开页面)均需访问控制检查
    • 限制可访问文件类型
    • 定期进行渗透测试

没有足够的传输层防护(Insufficient Transport Layer Protection)

  • 核心:攻击者截取网络包获取敏感信息
  • 流行性:常见
  • 危害性:中等
  • 防范措施:
    • 验证页面及敏感信息传输使用 SSL/TLS 加密
    • 网页不混杂 HTTP 和 HTTPS 内容,Cookie 设置 Secure 标签
    • 保持服务器证书有效,仅允许 SSL 3.0/TLS 1.0 以上协议

未验证的重定向和跳转(Unvalidated Redirects and Forwards)

  • 核心:跳转目标 URL 可由用户控制且未验证,用于钓鱼或绕过访问控制
  • 流行性:不常见
  • 危害性:中等
  • 示例:攻击者构造含恶意跳转地址的登录链接,用户登录后被导向钓鱼网站。
  • 防范措施:
    • 尽量避免重定向/跳转功能
    • 验证跳转参数,拒绝站外地址
    • 用映射代码替代 URL 中的真实目标地址

访问控制和防火墙

访问控制

  • 定义:按用户身份限制主体(用户、进程)对客体(文件、系统)的访问权限
  • 访问控制 三要素:主体、客体、权限,形成访问控制矩阵。
  • 访问控制举证的实际存储
    • 访问控制表(ACL):每个客体对应一组权限
      • File1 :[(Alice, rw), (Bob, r)]
      • File2 :[(Alice, r), (Bob, rwx)]
    • 访问能力表:每个主体对应一组权限
      • Alice :[(File1, rw), (File2, r)]
      • Bob :[(File1, r), (File2, rwx)]
    • 授权关系表:存储访问控制矩阵中的非空元素。
      • (Alice, File1, rw)
      • (Bob, File1, r)
      • (Alice, File2, r)
      • (Bob, File2, rwx)
  • 访问控制策略
    • 自主访问控制(DAC):主体可自主将拥有的客体的全部或部分权限授予他人
    • 强制访问控制(MAC):按主体和客体的安全等级决定访问权限
    • 基于角色的访问控制(RBAC):权限分配给角色,用户通过承担角色获取权限

防火墙

  • 定义:由软硬件构成的系统,一般部署于内部网络出口,控制内外网之间的访问。
  • 分类:
    • 网络级防火墙:基于报文过滤技术,对网络报文进行分析,阻止不合理的网络连接或数据传递。
    • 应用级防火墙:基于应用网关/代理服务器技术,对特定网络应用进行分析,阻止非法的网络应用。
  • 技术发展历程
    • 静态包过滤防火墙:通过 ACL 检查数据包源宿地址、端口、协议状态,确定是否允许通过
    • 应用代理防火墙:工作在应用层,使用代理技术阻断内外网直接通信,隐藏内部网络
    • 状态检测防火墙:动态包过滤,跟踪连接状态,自适应防护,也称为自适应防火墙或动态包过滤防火墙
    • UTM(Unified Threat Management,统一威胁管理)防火墙:集成 IDS/IPS、反病毒、反垃圾邮件、URL 过滤等功能
    • NGFW(Next Generation Firewall,下一代防火墙):深度感知应用、用户和内容,提供精细智能防护

Linux 防火墙——iptables

  • 组成:内核模块 netfilter + 用户空间工具 iptables
  • 四表五链:
    • 表:做什么(功能)
    • 链:什么时候做(时机)。
  • 四表(规则集合,按优先级排序)

    表名 优先级 功能 可用链
    raw 最高 处理原始数据包,标记 NOTRACK 免除连接跟踪 PREROUTINGOUTPUT
    mangle 第二 修改数据包标记/属性(TTL、TOS 等) 全部五链
    nat 第三 网络地址转换(SNAT 修改源地址 / DNAT 修改目标地址) PREROUTING(DNAT)、OUTPUTPOSTROUTING(SNAT)
    filter 最低 过滤数据包(ACCEPT / DROP / REJECT),最常用 INPUTFORWARDOUTPUT
  • 五链(数据包传输检查点)

    链名 触发时机 核心用途
    PREROUTING 数据包进入接口后,路由判断前 DNAT(修改目标地址)
    INPUT 数据包目标为本机 控制是否允许进入本机应用
    FORWARD 数据包目标不是本机,需转发至其他机器时 网关/路由器场景下的转发控制
    OUTPUT 本机进程产生的数据包发出前 控制本机数据包是否允许发出
    POSTROUTING 数据包离开接口前,路由判断后 SNAT(修改源地址)
  • 工作流程

入侵检测系统(IDS)

  • 常见攻击类型
    • 漏洞扫描
    • 端口扫描
    • 网络嗅探(sniffer)
    • 拒绝服务攻击
    • 欺骗攻击:ARP/IP/DNS 欺骗等
  • 入侵检测系统(Intrusion Detection System, IDS)

    • 定义:通过分析行为、安全日志、审计数据和其它网络上可获得的信息等操作,检测对系统的攻击或攻击企图。
    • 分类

      分类维度 类型 特点
      数据来源 主机入侵检测 基于主机日志、进程行为等数据
      网络入侵检测 基于网络数据包分析
      混合分布式入侵检测 结合主机和网络检测优势
      分析方法 基于异常的 IDS 机器学习构建正常行为轮廓,检测偏离行为
      基于误用的 IDS 基于攻击特征规则库,匹配已知攻击
    • 架构

      • 事件产生器:收集系统日志、网络数据等事件;
      • 事件分析器:分析事件,识别危险/异常,通知响应单元;
      • 响应单元:对分析结果作出反应,触发报警、终止进程、重置连接等动作;
      • 事件数据库:存储中间及最终数据。
    • 工作流程
      1. 信息收集:获取系统日志、应用日志、网络数据、审计记录等;
      2. 入侵分析:结合知识库(历史行为/攻击特征/正常行为轮廓等),通过异常检测或误用检测识别入侵;
      3. 告警响应:针对分析结果执行相应响应动作。
    • 分析技术对比

      分析技术 原理 知识库 指标 优点 缺点
      异常检测 统计分析 正常操作特征(用户轮廓) 漏报率低、误报率高 可检测未知攻击,自适应学习 正常行为特征、统计算法选择难度大
      误用检测 模式匹配 入侵行为模型(攻击特征) 误报率低、漏报率高 准确率高、算法简单 需更新特征库,无法检测未知攻击
  • IDS vs IPS vs FW vs WAF

    技术名称 网络布局 检测机制 主要用例
    IDS(入侵检测系统) 子网内部,与流量并行,不影响网络性能 基于签名/规则/统计异常检测已知/未知攻击 被动监视,检测攻击并报警
    IPS(入侵防御系统) 网络边界,与流量串联,承担数据转发功能,对性能有影响 基于签名/规则匹配已知威胁 主动防护,检测并阻止攻击流量
    FW(防火墙) 网络前端 传输层控制,允许/阻止 IP/端口 控制不同网络区域间流量
    WAF(Web 应用防火墙) Web 应用前端 应用层检查 HTTP 流量 检查并防护 Web 特定攻击
  • 开源 IDS——Snort

    • 特点:跨平台、轻量级,基于网络规则的入侵检测工具。
    • 工作过程:
      1. 数据包嗅探:监听网络数据包;
      2. 预处理器:用插件检查原始数据包,预处理后传输至检测引擎;
      3. 检测引擎(核心模块):将数据包与攻击签名/规则库匹配,匹配成功则通知报警模块;
      4. 报警/日志:将报警输出至日志文件、数据库或第三方插件。