溫馨提示×

centos上sqlplus安全設置

小樊
45
2025-10-04 23:46:47
欄目: 云計算

CentOS上SQL*Plus安全設置指南

一、用戶與權限安全管理

  1. 創建用戶與分配權限
    使用CREATE USER命令創建專用用戶(避免使用默認用戶如system),并為該用戶分配最小必要權限(如僅需CREATE SESSION連接數據庫、SELECT查詢數據則僅授此類權限,避免過度授權)。例如:

    CREATE USER app_user IDENTIFIED BY StrongPassword123;
    GRANT CREATE SESSION, SELECT ON schema_name.table_name TO app_user;
    FLUSH PRIVILEGES; -- 使權限立即生效
    

    若需為用戶分配預定義角色(如CONNECT、RESOURCE),可使用ALTER USER設置默認角色:

    ALTER USER app_user DEFAULT ROLE CONNECT, RESOURCE;
    
  2. 權限最小化原則
    遵循“最小權限原則”,僅授予用戶完成工作所需的最低權限。例如,開發人員僅需SELECTINSERT權限,不應授予DROP TABLE等高危權限;管理員權限應通過角色分離(如DBA角色),避免直接授予用戶。

二、操作系統級密碼安全配置

  1. 密碼有效期策略
    通過修改/etc/login.defs文件設置密碼有效期,強制用戶定期更換密碼。例如,設置密碼最大有效期為90天、修改后7天內不得再次修改、過期前10天提醒:

    sed -i "s/PASS_MAX_DAYS.*/PASS_MAX_DAYS\t90/g" /etc/login.defs
    sed -i "s/PASS_MIN_DAYS.*/PASS_MIN_DAYS\t7/g" /etc/login.defs
    sed -i "s/PASS_WARN_AGE.*/PASS_WARN_AGE\t10/g" /etc/login.defs
    

    對現有用戶可通過chage命令調整(效果等同于修改login.defs):

    chage -M 90 -m 7 -W 10 app_user
    
  2. 密碼復雜度要求
    修改PAM(Pluggable Authentication Modules)配置,強制密碼具備復雜度。編輯/etc/pam.d/system-auth/etc/pam.d/password-auth文件,添加以下規則:

    • 密碼最小長度12位;
    • 包含大小寫字母、數字、特殊字符(如@、#);
    • 禁止使用最近5次用過的密碼。
      示例配置:
    # 在/etc/pam.d/system-auth中添加/修改
    password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5
    password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= difok=1 minlen=12 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1
    
  3. 密碼驗證失敗鎖定
    通過pam_tally2模塊設置密碼嘗試次數限制,防止暴力破解。編輯/etc/pam.d/system-auth/etc/pam.d/password-auth文件,添加以下規則:

    • 連續輸錯5次密碼后鎖定賬戶;
    • 鎖定300秒(5分鐘)后自動解鎖。
      示例配置:
    # 在/etc/pam.d/system-auth中添加/修改
    auth required pam_tally2.so deny=5 onerr=fail unlock_time=300
    account required pam_tally2.so
    

    查看用戶鎖定狀態:pam_tally2 -u app_user;解鎖賬戶:pam_tally2 -r -u app_user。

三、SQL*Plus自身安全配置

  1. 隱藏密碼輸入
    避免在命令行直接輸入密碼(會被ps等命令查看),使用以下方式:

    • 交互式輸入:sqlplus app_user,然后根據提示輸入密碼;
    • 使用/nolog模式:sqlplus /nolog,再通過CONNECT app_user/password@service_name連接(密碼仍需手動輸入,但不會暴露在命令歷史中)。
  2. 配置文件權限管理
    SQL*Plus的配置文件(如login.sql、glogin.sql,通常位于用戶家目錄或$ORACLE_HOME/sqlplus/admin)包含敏感信息(如默認用戶名、密碼),需設置嚴格權限:

    chmod 600 ~/.sqlnet.ora ~/.oracle/profile
    chmod 700 ~/.sqlplus
    
  3. 禁用默認賬戶
    禁用Oracle數據庫中的默認賬戶(如scott、system),防止未授權訪問:

    ALTER USER scott ACCOUNT LOCK PASSWORD EXPIRE;
    ALTER USER system ACCOUNT LOCK PASSWORD EXPIRE;
    

四、網絡與訪問控制安全

  1. 限制遠程訪問
    若無需遠程連接SQL*Plus,關閉Oracle監聽器的遠程訪問;若需遠程訪問,通過防火墻限制訪問IP范圍。例如,使用firewalld僅允許特定IP訪問1521端口(Oracle默認端口):

    firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="1521" accept' --permanent
    firewall-cmd --reload
    
  2. 使用加密連接
    配置Oracle Net Services使用SSL/TLS加密,保護數據傳輸安全。編輯sqlnet.ora文件(位于$ORACLE_HOME/network/admin),添加以下配置:

    SQLNET.AUTHENTICATION_SERVICES=(NTS)
    SSL_CLIENT_AUTHENTICATION=TRUE
    SSL_VERSION=1.2
    WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/path/to/wallet)))
    

五、審計與監控

  1. 啟用數據庫審計
    開啟Oracle審計功能,記錄用戶操作(如登錄、數據修改、權限變更),便于事后追溯。例如,審計所有用戶的SELECT操作:

    AUDIT SELECT TABLE BY ACCESS;
    

    查看審計日志:SELECT * FROM DBA_AUDIT_TRAIL WHERE ACTION_NAME = 'SELECT' ORDER BY TIMESTAMP DESC;

  2. 監控SQL*Plus登錄
    通過操作系統日志(/var/log/secure)或Oracle審計日志監控SQLPlus登錄行為,及時發現異常登錄(如頻繁失敗、陌生IP登錄)。例如,使用grep命令過濾SQLPlus登錄記錄:

    grep "sqlplus" /var/log/secure
    

六、其他安全實踐

  1. 定期備份配置
    定期備份SQL*Plus配置文件(如login.sql)、數據庫備份腳本及審計日志,防止配置丟失或篡改。

  2. 自動化安全檢查
    編寫Shell腳本定期檢查密碼策略執行情況(如chage -l app_user)、SQL*Plus配置文件權限(如ls -l ~/.sqlnet.ora),并通過郵件發送報告。

通過以上步驟,可全面提升CentOS環境下SQL*Plus的安全性,防范未授權訪問、密碼泄露及數據篡改等風險。實際生產環境中,還需結合具體業務需求調整安全策略,并定期進行安全評估。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女