Ubuntu系统下MariaDB安全设置实战指南
首先确保Ubuntu系统及软件包为最新版本,避免已知漏洞:
sudo apt update && sudo apt upgrade -y 安装MariaDB服务器(默认源为Ubuntu官方仓库,版本较旧时可添加MariaDB官方源):
sudo apt install mariadb-server -y 使用mysql_secure_installation脚本完成核心安全设置,该脚本会引导完成以下关键操作:
DELETE FROM mysql.user WHERE User='',防止未认证访问;UPDATE mysql.user SET Host='localhost' WHERE User='root',仅允许本地登录;DROP DATABASE IF EXISTS test,避免未授权测试;FLUSH PRIVILEGES,使更改立即生效。Y确认:sudo mysql_secure_installation 编辑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 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授予的过度权限)。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; 配置SSL加密可防止数据在传输过程中被窃取或篡改:
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 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 STATUS;命令查看SSL状态(网络登录时需指定证书路径):mysql -u root -p --protocol=tcp --ssl-ca=/etc/mysql/ssl/server-cert.pem SHOW STATUS LIKE 'Ssl_cipher'; # 应显示加密套件(如AES256-SHA) 使用ufw(Ubuntu默认防火墙)限制访问,仅允许必要端口(如SSH的22端口、MariaDB的3306端口):
sudo apt install ufw -y sudo ufw enable 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 启用审计日志可追踪数据库操作,便于事后溯源:
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 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证书类型),并保持定期维护以应对新的安全威胁。