使用VPS服务器MySQL安全加固:防火墙与SSL加密配置指南
文章分类:行业新闻 /
创建时间:2025-09-04
在VPS服务器的日常运维中,MySQL数据库的安全是绕不开的核心课题。数据泄露、服务中断等风险往往源于防护措施的疏漏,而防火墙与SSL加密正是构建安全防线的关键工具。本文将通过实操步骤,带你掌握VPS服务器上MySQL的双重安全加固方法。
防火墙:拦截非法访问的第一道关卡
防火墙堪称服务器安全的“电子门卫”,能精准识别并拦截未经授权的网络请求。在VPS服务器上,常用iptables(传统规则管理工具)或firewalld(动态防火墙管理器)配置访问限制,这里分别介绍两种工具的操作方法。
iptables:传统规则的精准控制
首先检查iptables状态,确保服务已启动:
sudo systemctl status iptables
若未运行,用命令启动:
sudo systemctl start iptables
假设仅允许IP为192.168.1.100的主机访问MySQL(默认端口3306),需添加两条规则:
sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 3306 -j ACCEPT # 允许指定IP访问
sudo iptables -A INPUT -p tcp --dport 3306 -j DROP # 其他IP访问直接拒绝
规则生效后务必保存,避免重启丢失:
sudo service iptables save
firewalld:动态管理的便捷之选
若VPS使用firewalld,先确认服务状态:
sudo systemctl status firewalld
未启动则用命令激活:
sudo systemctl start firewalld
添加允许特定IP访问的规则(永久生效):
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="3306" accept'
再设置其他IP访问拒绝:
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" port protocol="tcp" port="3306" reject'
最后重载规则使配置生效:
sudo firewall-cmd --reload
SSL加密:数据传输的“加密信封”
即使防火墙拦截了非法访问,数据在网络传输过程中仍可能被截获。SSL加密能为数据穿上“加密外衣”,确保客户端与MySQL服务器间的通信安全。
第一步:生成SSL证书与密钥
在MySQL服务器创建SSL目录并生成所需文件(以自签名证书为例):
sudo mkdir /etc/mysql/ssl # 创建证书存储目录
sudo openssl genrsa 2048 > /etc/mysql/ssl/ca-key.pem # 生成CA私钥
sudo openssl req -new -x509 -nodes -days 3650 -key /etc/mysql/ssl/ca-key.pem -out /etc/mysql/ssl/ca.pem # 生成CA证书
sudo openssl genrsa 2048 > /etc/mysql/ssl/server-key.pem # 生成服务器私钥
sudo openssl req -new -key /etc/mysql/ssl/server-key.pem -out /etc/mysql/ssl/server-csr.pem # 生成服务器证书请求
sudo openssl x509 -req -in /etc/mysql/ssl/server-csr.pem -days 3650 -CA /etc/mysql/ssl/ca.pem -CAkey /etc/mysql/ssl/ca-key.pem -set_serial 01 -out /etc/mysql/ssl/server-cert.pem # 生成服务器证书
第二步:配置MySQL启用SSL
编辑MySQL主配置文件(路径可能因系统略有差异):
# 打开配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
ssl-ca=/etc/mysql/ssl/ca.pem # CA证书路径
ssl-cert=/etc/mysql/ssl/server-cert.pem # 服务器证书路径
ssl-key=/etc/mysql/ssl/server-key.pem # 服务器私钥路径
保存后重启MySQL服务使配置生效:
sudo systemctl restart mysql
第三步:客户端验证SSL连接
客户端连接时需指定CA证书,确保加密通道建立:
mysql -h <服务器IP> -u <用户名> -p --ssl-ca=/etc/mysql/ssl/ca.pem
连接成功后,可通过以下命令验证SSL是否启用:
SHOW VARIABLES LIKE 'have_ssl'; # 应显示为YES
SHOW SESSION STATUS LIKE 'Ssl_cipher'; # 显示具体加密算法即表示成功
完成防火墙规则配置与SSL加密启用后,VPS服务器上的MySQL将获得“访问控制+传输加密”的双重保护。建议定期检查防火墙规则是否被篡改,SSL证书到期前30天及时更新,让数据安全防护始终在线。