Ubuntu MariaDB如何进行安全设置
导读:Ubuntu系统下MariaDB安全设置实战指南 1. 基础环境准备 首先确保Ubuntu系统及软件包为最新版本,避免已知漏洞: sudo apt update && sudo apt upgrade -y 安装Maria...
Ubuntu系统下MariaDB安全设置实战指南
1. 基础环境准备
首先确保Ubuntu系统及软件包为最新版本,避免已知漏洞:
sudo apt update &
&
sudo apt upgrade -y
安装MariaDB服务器(默认源为Ubuntu官方仓库,版本较旧时可添加MariaDB官方源):
sudo apt install mariadb-server -y
2. 运行安全配置向导
使用mysql_secure_installation
脚本完成核心安全设置,该脚本会引导完成以下关键操作:
- 设置root密码:若未设置,输入强密码(包含大小写字母、数字、特殊字符,长度≥12位);
- 删除匿名用户:执行
DELETE FROM mysql.user WHERE User=''
,防止未认证访问; - 禁止root远程登录:执行
UPDATE mysql.user SET Host='localhost' WHERE User='root'
,仅允许本地登录; - 删除测试数据库:执行
DROP DATABASE IF EXISTS test
,避免未授权测试; - 重新加载权限:执行
FLUSH PRIVILEGES
,使更改立即生效。
全程按提示输入Y
确认:
sudo mysql_secure_installation
3. 配置文件优化
编辑MariaDB主配置文件/etc/mysql/mariadb.conf.d/50-server.cnf
,调整以下参数提升安全性:
- 限制绑定地址:将
bind-address = 127.0.0.1
保留(默认仅本地访问),若需远程访问需谨慎修改为0.0.0.0
(后续需配合防火墙限制IP); - 禁用本地文件访问:添加
local-infile = 0
,防止恶意用户通过LOAD DATA LOCAL INFILE
读取服务器文件; - 调整最大连接数:根据服务器性能设置
max_connections
(如max_connections = 500
),避免资源耗尽。
修改后重启服务使配置生效:
sudo systemctl restart mariadb
4. 用户权限精细化管理
- 创建专用用户:避免使用root进行日常操作,为用户分配最小必要权限。例如,创建
app_user
仅能从localhost
访问mydatabase
:CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'StrongPassword123!'; GRANT SELECT, INSERT, UPDATE ON mydatabase.* TO 'app_user'@'localhost'; FLUSH PRIVILEGES;
- 撤销多余权限:定期检查用户权限,使用
REVOKE
命令撤销不必要的权限(如GRANT ALL PRIVILEGES
授予的过度权限)。 - 限制远程访问:若需远程访问,仅为特定IP授权(如
192.168.1.100
),而非%
(所有IP):CREATE USER 'remote_user'@'192.168.1.100' IDENTIFIED BY 'RemotePass456!'; GRANT SELECT, INSERT ON mydatabase.* TO 'remote_user'@'192.168.1.100'; FLUSH PRIVILEGES;
5. 启用SSL/TLS加密传输
配置SSL加密可防止数据在传输过程中被窃取或篡改:
- 生成证书与密钥:MariaDB自带CA工具,生成自签名证书(生产环境建议使用权威CA签发的证书):
sudo mkdir -p /etc/mysql/ssl sudo openssl genrsa 2048 > /etc/mysql/ssl/server-key.pem sudo openssl req -new -x509 -nodes -days 365 -key /etc/mysql/ssl/server-key.pem -out /etc/mysql/ssl/server-cert.pem sudo openssl req -new -nodes -days 365 -key /etc/mysql/ssl/server-key.pem -out /etc/mysql/ssl/client-key.pem sudo openssl x509 -req -in /etc/mysql/ssl/client-key.pem -days 365 -CA /etc/mysql/ssl/server-cert.pem -CAkey /etc/mysql/ssl/server-key.pem -set_serial 01 -out /etc/mysql/ssl/client-cert.pem
- 配置MariaDB启用SSL:编辑
50-server.cnf
,添加以下内容:[mysqld] ssl-ca=/etc/mysql/ssl/server-cert.pem ssl-cert=/etc/mysql/ssl/server-cert.pem ssl-key=/etc/mysql/ssl/server-key.pem require_secure_transport=ON # 强制所有连接使用SSL
- 验证SSL连接:使用
STATUS;
命令查看SSL状态(网络登录时需指定证书路径):mysql -u root -p --protocol=tcp --ssl-ca=/etc/mysql/ssl/server-cert.pem SHOW STATUS LIKE 'Ssl_cipher'; # 应显示加密套件(如AES256-SHA)
6. 防火墙与网络隔离
使用ufw
(Ubuntu默认防火墙)限制访问,仅允许必要端口(如SSH的22端口、MariaDB的3306端口):
- 安装并启用ufw:
sudo apt install ufw -y sudo ufw enable
- 配置规则:允许SSH连接(确保管理通道安全),仅允许特定IP访问MariaDB(如公司IP
192.168.1.100
):sudo ufw allow ssh sudo ufw allow from 192.168.1.100 to any port 3306 sudo ufw default deny incoming # 默认拒绝所有入站连接 sudo ufw default allow outgoing # 允许所有出站连接
- 检查规则:
sudo ufw status verbose
7. 安全审计与监控
启用审计日志可追踪数据库操作,便于事后溯源:
- 编辑配置文件:在
50-server.cnf
中添加审计插件配置:[mysqld] plugin_load_add = server_audit server_audit_logging = ON server_audit_output_type = FILE server_audit_file_path = /var/log/mysql/server_audit.log server_audit_file_rotate_size = 1G # 单个日志文件最大1G server_audit_file_rotations = 10 # 保留10个日志文件
- 重启服务:
sudo systemctl restart mariadb
- 验证审计日志:查看日志是否记录了连接、查询等操作(需
sudo
权限):sudo tail -f /var/log/mysql/server_audit.log
8. 定期维护与更新
- 更新MariaDB:定期运行
sudo apt update & & sudo apt upgrade mariadb-server
,安装安全补丁; - 备份数据:使用
mariabackup
(MariaDB官方工具)进行物理备份,确保数据可恢复:sudo apt install mariadb-backup -y sudo mariabackup --backup --target-dir=/var/backups/mariadb/$(date +%F) --user=root --password='YourRootPassword'
- 监控日志:定期检查
/var/log/mysql/error.log
(错误日志)和/var/log/syslog
(系统日志),发现异常(如暴力破解尝试)及时处理。
通过以上步骤,可全面加固Ubuntu系统上MariaDB的安全性,覆盖从基础配置到高级防护的多个层面。需根据实际业务需求调整参数(如远程访问范围、SSL证书类型),并保持定期维护以应对新的安全威胁。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu MariaDB如何进行安全设置
本文地址: https://pptw.com/jishu/716354.html