溫馨提示×

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
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女