行业资讯

时间:2025-08-21 浏览量:(18)

CentOS 系统下 SQL Server 安全加固指南

随着 Linux 环境下 SQL Server 部署的普及,CentOS 凭借稳定的性能与 Windows 授权成本的节省,成为众多用户的选择。但数据库安全是核心保障,未加固的 SQL Server 可能面临数据泄露、业务中断等风险。本文将从账户权限、网络访问、系统补丁、数据加密、日志审计五大维度,提供 CentOS 系统下 SQL Server 的安全加固实操方案,帮助构建稳固的数据库防御体系。

一、安全加固的核心目标与整体思路

安全加固需遵循 “层层递进、闭环防护” 的逻辑,核心目标可拆解为四步:


  1. 减少攻击面:关闭不必要功能、隐藏敏感入口(如默认端口、默认账户);

  2. 提高入侵成本:通过权限控制、加密传输增加攻击难度;

  3. 增强数据保护能力:通过数据加密、备份策略防止数据泄露或丢失;

  4. 确保可审计性:开启日志与审计,便于追溯异常操作。

二、SQL Server 安全加固实操步骤

(一)安装与初始配置安全:从源头降低风险

CentOS 上安装 SQL Server 需通过 Microsoft 官方仓库,初始配置需重点关注 “密码复杂度” 与 “账户规范”:


  1. 官方源安装命令:

    bash
    # 添加SQL Server官方仓库sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2019.repo# 安装SQL Serversudo yum install -y mssql-server# 初始化配置(需设置管理员密码)sudo /opt/mssql/bin/mssql-server setup


  2. 初始配置关键要求:

    • 管理员密码需满足至少 12 位,包含大小写字母、数字、特殊符号;

    • 不使用sa账户作为日常操作账户,避免默认高权限账户暴露。

(二)账户与权限安全:最小权限原则落地

  1. 禁用或重命名 sa 账户
    sa是黑客最常攻击的默认账户,需通过 SQL 命令禁用或重命名:
    sql
    -- 禁用sa账户ALTER LOGIN sa DISABLE;-- 或重命名sa账户(替换[new_admin_name]为自定义名称)ALTER LOGIN sa WITH NAME = [new_admin_name];


    推荐方案:新建独立管理员账户,删除或禁用sa。
  2. 按业务分配最小权限
    为不同业务系统创建专属账户,仅授予必要权限(避免直接授予sysadmin角色),通过 “角色(Role)” 统一管理权限:
    sql
    -- 创建业务账户(替换StrongPass123!为复杂密码)CREATE LOGIN app_user WITH PASSWORD = 'StrongPass123!';-- 映射账户到目标数据库CREATE USER app_user FOR LOGIN app_user;-- 授予“数据读取+数据写入”权限(按需调整)ALTER ROLE db_datareader ADD MEMBER app_user;ALTER ROLE db_datawriter ADD MEMBER app_user;


(三)网络访问安全:限制入口、加密传输

  1. 修改 SQL Server 默认端口
    默认 1433 端口易被扫描,需修改为非默认端口(如 15345),并同步更新防火墙规则:
    bash
    # 修改端口sudo /opt/mssql/bin/mssql-conf set network.tcpport 15345# 重启SQL Server生效sudo systemctl restart mssql-server# 防火墙开放新端口、关闭旧端口sudo firewall-cmd --permanent --add-port=15345/tcpsudo firewall-cmd --permanent --remove-port=1433/tcp# 重新加载防火墙规则sudo firewall-cmd --reload


  2. 配置 IP 白名单
    仅允许特定 IP(如业务服务器、管理员终端)访问 SQL Server,通过防火墙rich-rule实现:
    bash
    sudo firewall-cmd --permanent --zone=public --add-rich-rule='
    rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="15345" accept'sudo firewall-cmd --reload


    (替换192.168.1.100为实际允许的 IP)
  3. 启用 SSL/TLS 加密传输
    配置证书实现数据传输加密,防止中间人攻击:
    bash
    # 1. 提前准备SSL证书(自签或购买),放置在/etc/ssl目录# 2. 配置SQL Server使用证书(替换证书/密钥路径)sudo /opt/mssql/bin/mssql-conf set network.tlscert /etc/ssl/certs/mssql.pemsudo /opt/mssql/bin/mssql-conf set network.tlskey /etc/ssl/private/mssql.key# 启用TLS 1.2(禁用低版本协议)sudo /opt/mssql/bin/mssql-conf set network.tlsprotocols 1.2# 重启生效sudo systemctl restart mssql-server


(四)系统与补丁管理:定期更新、减少漏洞

  1. 定期更新 SQL Server 与 CentOS
    通过yum更新数据库与系统补丁,修复已知安全漏洞:
    bash
    # 更新SQL Serversudo yum update mssql-server# 更新CentOS系统sudo yum update


  2. 设置自动更新任务
    通过crontab配置每周日凌晨 3 点自动更新 SQL Server(按需调整频率):
    bash
    # 编辑定时任务crontab -e# 添加如下内容(每周日3点执行更新)0 3 * * 0 yum update -y mssql-server


(五)数据加密与备份:保障数据完整性

  1. 启用透明数据加密(TDE)
    TDE 可加密磁盘上的数据库文件,防止物理文件泄露:
    sql
    -- 创建数据库主密钥(替换StrongTDEPass!为复杂密码)CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'StrongTDEPass!';-- 创建TDE证书CREATE CERTIFICATE TDECert WITH SUBJECT = 'TDE Certificate';-- 创建数据库加密密钥CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER CERTIFICATE TDECert;-- 启用目标数据库加密(替换MyDatabase为实际数据库名)ALTER DATABASE MyDatabase SET ENCRYPTION ON;


  2. 加密备份与异地存储
    • 对备份文件设置密码加密,避免备份泄露;

    • 备份文件需存储在与生产库不同的服务器,防止单点故障导致数据丢失。

(六)日志与审计:追溯异常操作

启用 SQL Server 审计功能,记录登录、查询、权限变更等关键操作,便于事后追溯:


sql
-- 创建服务器审计(日志存储路径可调整)CREATE SERVER AUDIT Audit_SQLSecurityTO FILE (FILEPATH = '/var/opt/mssql/data/audit/', MAXSIZE = 1 GB, MAX_ROLLOVER_FILES = 10)WITH (ON_FAILURE = CONTINUE);-- 启用审计ALTER SERVER AUDIT Audit_SQLSecurity WITH (STATE = ON);


注意:需定期分析审计日志,设置日志归档策略(如每月备份并清理过期日志),避免占用过多磁盘空间。

三、额外安全建议

  1. 限制数据库进程权限:禁止root直连数据库,使用普通 Linux 账户运行 SQL Server 进程,降低特权升级风险;

  2. 启用系统安全机制:开启 SELinux 或 AppArmor,限制 SQL Server 对系统资源的访问范围;

  3. 强制密码策略:设定密码有效期(如 90 天)、复杂度要求、历史密码禁用(避免重复使用旧密码);

  4. 定期安全扫描:使用nmap扫描端口暴露情况、sqlmap检测 SQL 注入风险,主动发现漏洞。

四、常见问题解答(FAQ)

问题解答
Q1:SQL Server 在 CentOS 上默认是安全的吗?不完全安全。默认安装未启用加密传输、未限制 IP 访问、sa账户仍存在,需手动加固。
Q2:修改端口能完全防止攻击吗?不能,但可降低被大规模扫描工具发现的概率,属于 “减少攻击面” 的有效手段。
Q3:是否必须禁用sa账户?强烈建议禁用或重命名,sa是黑客的主要攻击目标,禁用可大幅降低风险。
Q4:启用加密传输会影响性能吗?会有轻微影响(1%-5%),但安全收益远大于性能损耗,生产环境推荐启用。
Q5:数据库审计日志会占用大量空间吗?会。需配置日志归档策略(如每月备份清理),避免磁盘空间耗尽。


Search Bar

最新资讯

2025-08-12

100M 香港服务器租用相关信...

2025-07-29

站群 SEO 多 IP 服务器...

2025-07-28

新加坡服务器为何适配短视频采集...

2025-09-05

香港云服务器为何设置流量限制?...

2025-08-26

Nginx 与 Apache ...