帮助中心 > 关于网络安全 > CentOS服务器SQL Server安全性设置
CentOS服务器SQL Server安全性设置
时间 : 2025-08-16 10:08:16
编辑 : Jtti

在Linux环境下部署SQL Server已经越来越普遍,尤其是CentOS系统上运行的SQL Server,不仅性能稳定,还能节省Windows授权成本。然而,数据库安全问题不容忽视,如果没有进行安全加固,一旦被入侵,后果可能是数据泄露、业务中断甚至经济损失。本文将详细介绍如何在CentOS服务器上为SQL Server进行安全设置,帮助你构建一个稳固的数据库防御体系。

CentOS上SQL Server安全设置的总体思路:

安全加固的目标是:减少攻击面 → 提高入侵成本 → 增强数据保护能力 → 确保可审计性。

总体上可以从账户与权限安全,网络访问安全,系统与补丁管理,数据加密与备份,日志与审计几个方面入手。

CentOS服务器上SQL Server安全设置实操:

1. 安装与初始配置安全

在CentOS上安装SQL Server通常使用Microsoft官方仓库:

sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2019.repo
sudo yum install -y mssql-server
sudo /opt/mssql/bin/mssql-conf setup

安装过程中建议注意:设置复杂密码(至少12位,包含大小写字母、数字、特殊符号),不使用sa作为日常操作账户

2. 禁用或重命名sa账户

sa是黑客最常攻击的账户名,建议禁用或重命名:

ALTER LOGIN sa DISABLE;
ALTER LOGIN sa WITH NAME = [new_admin_name];

或者直接新建一个管理员账户,并删除sa。

3. 修改默认端口

SQL Server默认监听1433端口,可以通过修改端口减少被扫描的概率:

sudo /opt/mssql/bin/mssql-conf set network.tcpport 15345
sudo systemctl restart mssql-server

同时在防火墙开放新端口并关闭旧端口:

sudo firewall-cmd --permanent --add-port=15345/tcp
sudo firewall-cmd --permanent --remove-port=1433/tcp
sudo firewall-cmd --reload

4. 启用防火墙与白名单

只允许特定IP访问SQL Server:

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

这样可以有效防止外部扫描和非法连接。

5. 启用加密连接

在SQL Server中配置SSL/TLS加密传输:

生成或购买SSL证书,在/etc/ssl下配置证书和密钥,修改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 systemctl restart mssql-server

6. 最小权限原则

为不同业务系统创建独立账户,按需授予权限,不要授予sysadmin给非DBA用户,使用角色(Role)管理权限,避免直接赋权

示例:

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;

7. 定期更新SQL Server和CentOS补丁

sudo yum update mssql-server
sudo yum update

可以通过crontab定期检查更新:

0 3 * * 0 yum update -y mssql-server

8. 开启日志与审计

启用SQL Server审计功能,记录登录、查询、权限变更等操作:

CREATE SERVER AUDIT Audit_SQLSecurity
TO 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);

并定期分析日志,发现异常行为。

9. 数据加密与备份

启用透明数据加密(TDE)保护磁盘上的数据,对备份文件进行密码加密,将备份存储在安全位置,避免与生产库同服务器。

示例:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'StrongTDEPass!';
CREATE CERTIFICATE TDECert WITH SUBJECT = 'TDE Certificate';
CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER CERTIFICATE TDECert;
ALTER DATABASE MyDatabase SET ENCRYPTION ON;

额外安全建议:

禁止root直连数据库,使用普通Linux账户运行数据库进程,避免特权升级漏洞。同时定期安全扫描,推荐使用nmap、sqlmap等工具自测端口和SQL注入风险。还要开启SELinux或AppArmor,限制SQL Server对系统资源的访问范围。最好使用强制密码策略,设定密码有效期、复杂度、历史记录,防止弱密码。

常见问答:

Q1:SQL Server在CentOS上默认是安全的吗?

A:并不完全安全,默认安装没有加密传输、没有限制访问IP、sa账户依旧存在,需手动加固。

Q2:改端口能防止攻击吗?

A:改端口不能完全防御,但可以降低被大规模扫描工具发现的概率,属于“降低暴露面”的方法。

Q3:是否必须禁用sa账户?

A:强烈建议禁用或重命名,sa是常见的攻击目标。

Q4:启用加密传输会影响性能吗?

A:会有轻微性能影响(1%-5%),但对安全提升巨大,生产环境建议启用。

Q5:数据库日志会不会占用很多空间?

A:会的,所以需要设置日志归档策略,比如每月备份日志并清理过期文件。

相关内容

Debian批量设置环境变量的常见问题和解决方法 WebSocket断连问题终极排查手册:从流量控制到心跳机制的完整配置 企业级网络穿透技术基于STUN与TURN的NAT穿越方案 2025前端开发必备JavaScript高级编程技巧 成本节约型加速方案:基于智能调度CDN+穿透资源分配攻略 2025年的CDN边缘节点正在面临哪些安全威胁 网站服务器经常被攻击封禁UDP有用吗 一文带你了解UDP协议和TCP协议的区别有哪些 SQLite连接池踩坑实录:服务器部署中的5大误区与修复方案 Java基础必知:Scanner类中nextInt()与next()的用法差异
返回

24/7/365 全天候支持我们时刻恭候您

帮助中心