如何配置CentOS系统以保护数据库服务器的安全

来源:微信开发网作者:深圳SEO公司头衔:草根站长
导读:本期聚焦于小伙伴创作的《如何配置CentOS系统以保护数据库服务器的安全》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何配置CentOS系统以保护数据库服务器的安全》有用,将其分享出去将是对创作者最好的鼓励。

数据库服务器的安全不仅依赖数据库自身的权限配置,CentOS系统层面的加固同样至关重要,合理的系统配置能从根源上减少数据库被攻击的可能性。

如何配置CentOS系统以保护数据库服务器的安全

账户与权限管理配置

首先需要对系统账户进行规范化管理,避免不必要的账户拥有过高权限,减少数据库被越权访问的风险。

禁用不必要的系统账户

除了数据库运行所需的专用账户,其他无关账户应设置为不可登录状态,防止账户被暴力破解后直接访问数据库文件。

# 查看当前系统账户
cat /etc/passwd
# 锁定不需要的系统账户,比如games、ftp等
sudo passwd -l games
sudo passwd -l ftp
# 禁止root账户直接远程登录
sudo sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
sudo systemctl restart sshd

创建专用数据库运行账户

不要使用root账户运行数据库服务,应创建独立的低权限账户,仅赋予该账户访问数据库相关目录和文件的权限。

# 创建mysql专用运行账户
sudo useradd -r -s /sbin/nologin mysql
# 修改数据库数据目录的所属用户和组
sudo chown -R mysql:mysql /var/lib/mysql
# 修改数据库配置目录权限,仅允许mysql账户和root访问
sudo chmod 750 /etc/mysql

防火墙规则配置

CentOS默认的firewalld防火墙可以有效限制外部对数据库端口的访问,仅开放必要的访问来源。

限制数据库端口访问来源

数据库默认端口如3306(MySQL)、5432(PostgreSQL)不应对所有公网IP开放,仅允许业务服务器和指定管理IP访问。

# 启动firewalld服务
sudo systemctl start firewalld
sudo systemctl enable firewalld
# 开放SSH端口,避免配置后无法远程管理
sudo firewall-cmd --permanent --add-service=ssh
# 仅允许指定IP段访问MySQL的3306端口
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.0.0/24" port protocol="tcp" port="3306" accept'
# 拒绝其他所有对3306端口的访问
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port protocol="tcp" port="3306" drop'
# 重新加载防火墙规则
sudo firewall-cmd --reload
# 查看当前生效的规则
sudo firewall-cmd --list-all

SELinux安全策略配置

SELinux是CentOS自带的内核级安全模块,合理配置可以限制进程对文件、端口的访问权限,即使数据库服务被入侵,也能限制攻击者的操作范围。

调整数据库相关SELinux上下文

如果数据库数据目录不是默认路径,需要手动修改目录的SELinux上下文,避免SELinux阻止数据库进程访问文件。

# 查看数据库数据目录当前的SELinux上下文
ls -Z /var/lib/mysql
# 如果自定义了数据目录,比如/data/mysql,修改其上下文为mysqld_db_t
sudo semanage fcontext -a -t mysqld_db_t "/data/mysql(/.*)?"
# 应用上下文修改
sudo restorecon -Rv /data/mysql
# 允许数据库监听非默认端口(如果需要)
sudo semanage port -a -t mysqld_port_t -p tcp 3307

设置SELinux为强制模式

不要将SELinux设置为禁用模式,强制模式可以有效拦截异常的进程访问行为。

# 查看当前SELinux状态
getenforce
# 临时设置为强制模式
sudo setenforce 1
# 永久设置SELinux为强制模式,修改配置文件
sudo sed -i 's/SELINUX=disabled/SELINUX=enforcing/' /etc/selinux/config

系统服务与文件权限配置

除了上述配置,还需要对系统服务和关键文件权限做进一步限制,减少攻击面。

关闭不必要的系统服务

关闭系统中不需要的服务,避免这些服务存在漏洞被攻击者利用,进而渗透到数据库服务器。

# 查看当前运行的服务
systemctl list-units --type=service --state=running
# 关闭不需要的服务,比如cups打印服务、telnet服务等
sudo systemctl stop cups
sudo systemctl disable cups
sudo systemctl stop telnet
sudo systemctl disable telnet

限制数据库配置文件的访问权限

数据库配置文件通常包含连接密码等敏感信息,需要严格限制访问权限,仅允许root和数据库运行账户读取。

# 修改MySQL配置文件权限
sudo chmod 600 /etc/mysql/my.cnf
sudo chown root:mysql /etc/mysql/my.cnf
# 禁止普通用户查看数据库日志文件
sudo chmod 640 /var/log/mysql/error.log
sudo chown mysql:mysql /var/log/mysql/error.log

定期安全审计配置

配置系统审计规则,记录对数据库相关文件和进程的异常访问行为,便于后续安全排查。

# 安装审计工具
sudo yum install -y audit
# 启动审计服务
sudo systemctl start auditd
sudo systemctl enable auditd
# 添加审计规则,监控对mysql数据目录的写操作
sudo auditctl -w /var/lib/mysql -p wa -k mysql_data_change
# 添加审计规则,监控mysqld进程的异常启动
sudo auditctl -w /usr/sbin/mysqld -p x -k mysql_process_start
# 查看审计日志
sudo ausearch -k mysql_data_change

完成上述配置后,建议定期更新CentOS系统补丁,及时修复系统层面的安全漏洞,同时结合数据库自身的安全配置,形成多层防护体系,最大程度保障数据库服务器的安全。

CentOS数据库服务器安全系统配置防火墙规则SELinux修改时间:2026-07-15 13:45:29

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。