温馨提示×

Ubuntu MariaDB如何进行安全设置

小樊
52
2025-09-25 10:24:49
栏目: 云计算

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(如公司IP192.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证书类型),并保持定期维护以应对新的安全威胁。

0