温馨提示×

Ubuntu上SQL Server的安全性怎样保障

小樊
35
2025-12-31 19:08:44
栏目: 云计算

Ubuntu 上 SQL Server 的安全性保障

一 身份与访问控制

  • 使用强口令并保护 SA:完成安装后通过 sudo /opt/mssql/bin/mssql-conf setup 设置高强度的 SA 密码,仅在必要时临时启用,日常以最小权限的专用账户运维。
  • 禁用或限制内置管理员组:在 SSMS 中检查 BUILTIN\Administrators 登录属性,必要时将其状态设为“拒绝连接/禁用登录”。
  • 强制密码策略:对 SA 及其他登录名启用“强制实施密码策略”“强制密码过期”,降低弱口令风险。
  • 最小权限与角色分离:按业务最小权限分配数据库角色(如 db_datareader/db_datawriter),避免滥用 db_owner;删除或禁用不必要的登录与数据库用户。
  • 禁用或移除 guest 账户:在非系统库(除 master/tempdb 外)中禁用/删除 guest,减少横向移动面。

二 网络与传输加密

  • 仅开放必要端口与来源:默认监听 TCP 1433,使用 UFW 仅允许受控来源的 1433/tcp 入站,例如:sudo ufw allow from 192.168.1.0/24 to any port 1433 proto tcp;避免对全网开放。
  • 启用传输层加密(TLS):为服务器配置用于服务器身份验证的证书(CN 与主机名或 FQDN 一致),证书与私钥权限设为 600 且属主为 mssql:mssql;在 SQL Server 中配置证书与密钥路径并启用加密:
    • 示例:
      • sudo /opt/mssql/bin/mssql-conf set network.tlscert /etc/ssl/certs/mssql.pem
      • sudo /opt/mssql/bin/mssql-conf set network.tlskey /etc/ssl/private/mssql.key
      • sudo /opt/mssql/bin/mssql-conf set network.tlsprotocols 1.2
      • sudo /opt/mssql/bin/mssql-conf set network.forceencryption 1
      • sudo systemctl restart mssql-server
    • 客户端信任链:生产环境使用 CA 签发证书;自签证书仅用于测试,客户端需导入 CA 证书或服务器证书到受信根。
  • 禁用不安全协议与端口:仅启用 TLS 1.2(必要时 1.1/1.0),避免使用明文或旧协议。

三 数据静态加密与数据脱敏

  • 透明数据加密(TDE):对关键数据库启用 TDE,加密数据文件与日志文件,防止存储介质泄露导致的数据外泄。
  • 列级加密与 Always Encrypted:对高敏字段使用对称密钥/证书进行加密,或使用 Always Encrypted 将加密密钥保留在客户端,服务器端无法解密,适合身份证号、手机号等场景。
  • 动态数据掩码(DDM):对查询视图或应用层暴露的敏感列(如手机号、邮箱)配置掩码规则,降低非授权查看风险。

四 审计与监控

  • 登录审计:在服务器属性“安全性”中启用“成功与失败登录”审计,持续记录认证事件,便于入侵溯源。
  • 精细化审计与性能监控:使用 SQL Server Audit 跟踪关键 DDL/DML 操作;结合 Extended Events 捕获慢查询、异常登录与权限变更等安全相关事件;通过 DMV(如 sys.dm_exec_requests)进行实时会话与查询监控。
  • 定期巡检:周期性核查登录账户、权限分配、失败登录趋势与加密状态,形成基线并异常告警。

五 系统加固与运维

  • 及时打补丁:保持 UbuntuSQL Server 的安全更新与累积更新(CU)为最新,修复已知漏洞。
  • 备份与恢复演练:制定包含全备/差异/日志备份的策略,定期在隔离环境验证可恢复性与 RPO/RTO;对加密数据库,确保 TDE 证书与私钥的备份与离线保存。
  • 主机与网络安全:仅开放必要端口(如 1433/tcp),禁用不必要的服务与端口转发;如需远程管理,优先采用 SSH 密钥登录并禁用密码认证,减少暴力破解面。
  • 安全配置基线:遵循最小权限、职责分离、网络分段与零信任原则,对变更进行变更管理与审计留痕。

0