一、操作系統層面安全設置
創建專用Oracle用戶與組
為Oracle數據庫創建專用操作系統用戶及組,避免使用root管理數據庫。執行以下命令:
groupadd oinstall # 歸屬組
groupadd dba # DBA權限組
useradd -g oinstall -G dba -m oracle # 創建oracle用戶,歸屬oinstall組,附加dba組
passwd oracle # 設置強密碼
將oracle用戶主目錄設為Oracle軟件安裝路徑(如/u01/app/oracle
),并修改環境變量(編輯~/.bash_profile
):
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
source ~/.bash_profile # 生效配置
調整系統內核參數
編輯/etc/sysctl.conf
,添加Oracle推薦的內核參數以優化系統性能與安全性:
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
kernel.shmall = 2097152
kernel.shmmax = 2147483648
net.ipv4.ip_local_port_range = 9000 65500
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.rp_filter = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
執行sysctl -p
使參數生效。
配置用戶權限限制
編輯/etc/security/limits.conf
,限制oracle用戶的資源使用,防止資源濫用:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
SELinux配置(若啟用)
若系統啟用SELinux,需設置正確的上下文以確保Oracle正常運行:
chcon -R -t oracle_home_t /u01/app/oracle
chcon -R -t oracle_db_t /u01/app/oradata
二、Oracle數據庫層面安全設置
數據字典保護
啟用數據字典保護,僅允許SYSDBA用戶訪問基礎表,防止未授權訪問敏感數據字典:
ALTER SYSTEM SET O7_DICTIONARY_ACCESSIBILITY=FALSE SCOPE=SPFILE;
SHUTDOWN IMMEDIATE;
STARTUP;
口令復雜度策略
通過修改PROFILE設置密碼復雜度,要求密碼長度≥6位且包含數字、小寫字母、大寫字母、特殊符號中的至少2類,增強賬戶安全性:
CREATE PROFILE strong_pwd LIMIT
PASSWORD_VERIFY_FUNCTION verify_function_11G
PASSWORD_LIFE_TIME 90
PASSWORD_REUSE_TIME 0
PASSWORD_REUSE_MAX UNLIMITED
FAILED_LOGIN_ATTEMPTS 5
PASSWORD_LOCK_TIME 1/24;
ALTER USER sys PROFILE strong_pwd;
ALTER USER system PROFILE strong_pwd;
限制SYSDBA遠程登錄
禁止SYSDBA權限用戶從遠程主機登錄,降低遠程攻擊風險:
ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=NONE SCOPE=SPFILE;
SHUTDOWN IMMEDIATE;
STARTUP;
開啟數據庫審計
啟用審計功能,記錄用戶對數據庫的所有操作(如登錄、數據修改),便于后續追溯:
ALTER SYSTEM SET AUDIT_TRAIL='DB,EXTENDED' SCOPE=SPFILE;
SHUTDOWN IMMEDIATE;
STARTUP;
-- 示例審計命令:審計用戶scott的所有操作
AUDIT ALL BY scott BY ACCESS;
配置監聽器密碼
為Oracle監聽器設置密碼,防止未授權用戶修改監聽器配置:
lsnrctl
LSNRCTL> SET CURRENT_LISTENER LISTENER
LSNRCTL> CHANGE_PASSWORD
Old password:
New password:
Reenter new password:
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))
Password changed for LISTENER
LSNRCTL> SAVE_CONFIG
可信IP訪問控制
通過sqlnet.ora
文件限制僅信任的IP地址能訪問數據庫,減少非法訪問:
編輯$ORACLE_HOME/network/admin/sqlnet.ora
,添加:
TCP.VALIDNODE_CHECKING=YES
TCP.INVITED_NODES=(192.168.1.100,192.168.1.101) # 替換為信任的IP
TCP.EXCLUDED_NODES=(192.168.1.200) # 可選:排除的IP
執行lsnrctl reload
使配置生效。
網絡傳輸加密
啟用SSL/TLS加密客戶端與數據庫之間的網絡傳輸,保護數據隱私:
編輯$ORACLE_HOME/network/admin/sqlnet.ora
,添加:
SQLNET.ENCRYPTION_SERVER=REQUIRED
SQLNET.ENCRYPTION_TYPES_SERVER=(AES256)
SQLNET.CRYPTO_CHECKSUM_SERVER=REQUIRED
SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER=(SHA256)
設置最大連接數
根據服務器性能調整最大連接數,避免過多連接導致資源耗盡:
ALTER SYSTEM SET PROCESSES=200 SCOPE=SPFILE;
ALTER SYSTEM SET SESSIONS=230 SCOPE=SPFILE; -- sessions = processes * 1.1 + 5
SHUTDOWN IMMEDIATE;
STARTUP;
三、日常運維安全維護
定期審計日志檢查
定期查看系統日志(/var/log/secure
)和Oracle審計日志($ORACLE_BASE/admin/orcl/adump
),識別異常登錄(如多次失敗嘗試)或未授權操作:
grep "ORA-" /var/log/secure # 查看Oracle相關錯誤日志
ls -l $ORACLE_BASE/admin/orcl/adump # 查看審計文件
定期備份與恢復測試
制定備份策略(如每日增量備份+每周全量備份),使用RMAN工具備份數據庫,并定期測試恢復流程,確保數據可恢復:
rman target /
RMAN> BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT;
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;
及時更新補丁
定期檢查Oracle官方安全公告,及時安裝數據庫補?。ㄈ鏟SU、CPU),修復已知漏洞:
# 使用Oracle OPatch工具應用補丁
opatch apply /path/to/patch
文件權限審查
定期檢查Oracle關鍵目錄(如$ORACLE_HOME
、$ORACLE_BASE/oradata
)的權限,確保只有oracle用戶和dba組有訪問權限:
chown -R oracle:dba $ORACLE_HOME
chmod -R 750 $ORACLE_HOME
chown -R oracle:dba $ORACLE_BASE/oradata
chmod -R 750 $ORACLE_BASE/oradata
SSH安全加固
禁用root遠程登錄,修改SSH默認端口(如22→2222),啟用密鑰認證,減少SSH攻擊面:
編輯/etc/ssh/sshd_config
:
PermitRootLogin no
Port 2222
PubkeyAuthentication yes
PasswordAuthentication no
重啟SSH服務:
systemctl restart sshd