CentOS 上 Oracle 安全配置清单
一 系统层安全基线
firewall-cmd --add-port=1521/tcp --permanent && firewall-cmd --reload。setsebool -P oracle_can_network 1),避免直接 SELINUX=disabled。groupadd oinstall、groupadd dba、useradd -g oinstall -G dba oracle,并为 oracle 设置强口令。/etc/security/limits.conf 为 oracle 设置:nproc 2047/16384、nofile 1024/65536、stack 10240;在 /etc/pam.d/login 加入 session required pam_limits.so;在 /etc/profile 为 oracle 用户设置 ulimit -u 16384 -n 65536。/etc/sysctl.conf 设置关键内核参数(示例值,按内存与负载调优):
fs.file-max = 6815744、fs.aio-max-nr = 1048576kernel.shmall = 2097152、kernel.shmmax = 2147483648、kernel.shmmni = 4096kernel.sem = 250 32000 100 128net.ipv4.ip_local_port_range = 9000 65500net.core.rmem_default = 262144、net.core.rmem_max = 4194304net.core.wmem_default = 262144、net.core.wmem_max = 1048576sysctl -p 使配置生效。二 数据库层安全配置
CREATE ANY TABLE、DROP ANY TABLE);减少可直连 SYS 的人员数量。verify_function 或自定义口令校验包),并设置合理策略:
PASSWORD_LIFE_TIME = 90、FAILED_LOGIN_ATTEMPTS = 5、PASSWORD_LOCK_TIME = 1/24(锁定 1 小时)、PASSWORD_REUSE_TIME = 0、PASSWORD_GRACE_TIME = 10。O7_DICTIONARY_ACCESSIBILITY = FALSE,禁止非 SYSDBA 直接访问数据字典基表,降低信息泄露与提权风险。$ORACLE_HOME/network/admin/sqlnet.ora 启用白名单:
tcp.validnode_checking = yestcp.invited_nodes = (192.168.1.0, 192.168.1.1)(按需替换为可信网段/主机)sqlnet.encryption = required,防止明文传输。processes = 200(示例),并配合 sessions、transactions 等参数避免资源被滥用。三 审计与监控
ALTER SYSTEM SET audit_trail='DB,EXTENDED' SCOPE=SPFILE;(或 'OS,EXTENDED'),重启后生效;按需审计关键对象与关键操作(如 CREATE USER、DROP TABLE、ALTER SYSTEM)。listener.log、alert.log),结合 SIEM 或日志平台进行异常检测与告警。四 快速检查清单与常用命令
firewall-cmd --list-ports | grep 1521(确保仅放行必要端口)getenforce(应为 Enforcing)ulimit -u、ulimit -n(oracle 会话下应达到 limits.conf 配置)sysctl -p 生效后检查关键项(如 fs.file-max、kernel.sem)grep -E "tcp.validnode_checking|tcp.invited_nodes" $ORACLE_HOME/network/admin/sqlnet.oragrep "sqlnet.encryption" $ORACLE_HOME/network/admin/sqlnet.oraSHOW PARAMETER AUDIT_TRAILSHOW PARAMETER O7_DICTIONARY_ACCESSIBILITYDBA_PROFILES 中 PASSWORD_VERIFY_FUNCTION、FAILED_LOGIN_ATTEMPTS、PASSWORD_LOCK_TIME 等PUBLIC 的对象权限五 安全加固注意事项