oracle 数据库安全基线
目录
一、服务器基线
1. 环境与软硬件规范
1.1. 运行环境
1.2. 软件版本
1.3. ASM磁盘组
2. 操作系统安装规范
2.1. 字符集
2.2. 时区
3. 操作系统配置规范
3.1. 系统服务
3.2. SELinux
3.3. 透明大页
3.4. NTP配置
3.5. 多路径软件配置
3.6. 系统内核参数
3.7. SHELL配置
4. ORACLE数据库配置规范
4.1. 表空间配置规范
4.2. 数据文件管理规范
4.3. ASM实例参数调整
4.4. 数据库参数调整
4.5. Redo log配置规范
4.6. 控制文件参数调整
4.7. 监听器端口调整
4.8. Oracle用户与密码过期调整
4.9. 密码错误10次锁定调整
5. 安全基线配置
5.1. SNMP服务配置
5.2. 禁用ctrl+alt+del组合键
5.3. 锁定用户
5.4. 配置账户认证失败次数限制
5.5. 配置SSH方式账户认证失败次数限制
5.6. 配置记录用户对设备的操作(pacct)
5.7. 配置安全事件日志
5.8. 取消重要文件suid和sgid权限
5.9. 检查需关闭的服务
5.10. 配置su权限
5.11. 配置数据库用户权限
一、服务器基线
1. 环境与软硬件规范
1.1. 运行环境
序号 |
名称 |
规范 |
备注 |
1 |
高可用模式 |
数据库集群 |
|
2 |
数据库集群方式 |
ORACLE RAC |
|
3 |
RAC存储管理方式 |
ORACLE ASM |
|
4 |
操作系统 |
Linux |
64bit |
1.2. 软件版本
序号 |
运行环境名称 |
运行环境统一规范 |
备注 |
1 |
ORACLE GI初始版本 |
GRID 11.2.0.4.0 |
按年度动态更新 |
2 |
ORACLE GI PSU |
PSU 11.2.0.4.10 |
按年度动态更新 |
3 |
ORACLE DATABASE初始版本 |
DATABASE 11.2.0.4.0 |
按年度动态更新 |
4 |
ORACLE DATABASE PSU |
PSU 11.2.0.4.10 |
按年度动态更新 |
5 |
操作系统初始版本 |
RHEL 6.8 |
按年度动态更新 |
1.3. ASM磁盘组
序号 |
磁盘组名称 |
用途 |
冗余方式 |
RAID类型 |
建议设置 |
1 |
+DATA01 |
存放业务数据 |
外部冗余 |
RAID 5 |
按资源分配的方式单为依据来划分大小 |
2 |
+ARCH |
存放归档日志 |
外部冗余 |
RAID 5 |
初始空间1000G,后期根据备份策略动态调整。 |
3 |
+OCR_VOTE |
存放VOTING DISK和OCR |
标准冗余 |
RAID 1+0 |
配置3块或以上大小相同的磁盘,建议大小为10GB |
4 |
+REDO_LOG |
存放在线日志 |
外部冗余 |
RAID 1+0 |
建议磁盘大小为10GB,日志分组见6.5小节 |
2. 操作系统安装规范
2.1. 字符集
统一采用英文界面安装,以保证采用英文作为操作系统缺省的语言环境。同时,在安装附加语言支持时,选择简体中文。
2.2. 时区
(1)时区选择东八区:Shanghai,Asia;
(2)系统时钟不使用 UTC(世界协调时间);若有特殊要求,可根据实际需求调整。
3. 操作系统配置规范
3.1. 系统服务
序号 |
服务名称 |
服务说明 |
建议 |
1 |
ip6tables |
ipv6包过滤软件防火墙服务 |
关闭 |
2 |
iptables |
包过滤软件防火墙服务 |
关闭 |
3 |
sshd |
ssh远程服务 |
开启 |
4 |
NTP |
时间服务器 |
开启 |
5 |
Bluetooth |
蓝牙服务 |
关闭 |
6 |
postfix |
电子邮件服务 |
关闭 |
7 |
cups |
cups打印机服务 |
关闭 |
8 |
cpuspeed |
cpu速率调整服务 |
关闭 |
9 |
NetworkManager |
网络自动管理服务 |
关闭 |
10 |
vsftpd |
ftp服务 |
关闭 |
11 |
dhcpd |
dhcp服务 |
关闭 |
12 |
nfs |
网络文件共享服务 |
关闭 |
13 |
nfslock |
nfs锁机制服务 |
关闭 |
14 |
ypbind |
nis客户端服务 |
关闭 |
3.2. SELinux
SELinux 全称 Security Enhanced Linux,因当前生产环境采用了硬件防火墙,建议关闭SELinux安全策略,以免降低性能。
3.3. 透明大页
透明大页(Transparent HugePages )在RAC环境下会导致性能问题,ORACLE官方不建议使用。
3.4. NTP配置
配置NTP服务时注意启用-x微调模式选项。
3.5. 多路径软件配置
(1)多路径软件和存储连接要求最少两条链路,设置为负载均衡模式。
(2)建议优先选用存储厂商提供的多路径软件。若使用操作系统自带的multipath配置存储多路径,按下面的规范进行配置:
3.6. 系统内核参数
序号 |
参数名 |
参数说明 |
建议值 |
1 |
kernel.shmmni |
共享内存段的最大数量 |
4096 |
2 |
kernel.shmall |
控制共享内存页数 |
根据计算公式进行调整,物理内存*0.7*1024*1024KB/4KB |
3 |
kernel.shmmax |
单个共享内存段的最大值 |
根据计算公式进行调整,物理内存*0.7*1024*1024*1024 |
4 |
kernel.sem |
每个进程通讯需要的信号灯 |
250 32000 100 128 |
5 |
fs.file-max |
同时打开的文件数目 |
6815744 |
6 |
fs.aio-max-nr |
同时可以拥有的的异步IO请求数目 |
1048576 |
7 |
net.core.rmem_default |
接收套接字缓冲区默认大小 |
262144 |
8 |
net.core.rmem_max |
接收套接字缓冲区最大值 |
4194304 |
9 |
net.core.wmem_default |
发送套接字缓冲区默认大小 |
262144 |
10 |
net.core.wmem_max |
发送套接字缓冲区最大值 |
1048576 |
11 |
net.ipv4.ip_local_port_range |
端口的范围 |
9000 65500 |
12 |
net.ipv4.ipfrag_high_thresh |
IP分片汇聚的最大内存用量 |
4194304 |
13 |
net.ipv4.ipfrag_low_thresh |
用于IP分片汇聚的最小内存用量 |
3145728 |
14 |
vm.min_free_kbytes |
系统虚拟内存最低保留的大小 |
512000 |
15 |
vm.vfs_cache_pressure |
内核回收用于directory和inode cache内存的倾向 |
200 |
16 |
vm.swappiness |
控制系统将内存交换到SWAP积极性 |
20 |
17 |
vm.nr_hugepages |
启用大页管理,该参数指明了内存页数 |
DB_SGA+ASM_SGA+1GB/Hugepagesize |
3.7. SHELL配置
编辑limits.conf文件,设置grid和oracle用户的资源限制,并把pam_limits.so加入启动文件中以确保配置生效。
# vi /etc/pam.d/login #编辑login文件,加入以下内容
session required pam_limits.so
4. ORACLE数据库配置规范
4.1. 表空间配置规范
序号 |
名称 |
建议初始大小 |
数据文件存放位置 |
1 |
SYSTEM表空间 |
30G |
+DATA01 |
2 |
SYSAUX表空间 |
60G |
+DATA01 |
3 |
UNDOTBS1表空间 |
120G |
+DATA01 |
4 |
UNDOTBS2表空间 |
120G |
+DATA01 |
5 |
TEMP表空间 |
>=60G |
+DATA01 |
6 |
业务表空间 |
|
+DATA01 |
4.2. 数据文件管理规范
UNDO、TEMP表空间中的文件,必须关闭自动扩展;业务表空间,建议关闭自动扩展。
4.3. ASM实例参数调整
Oracle11g默认asm实例的SGA大小为272M,在实际生产过程中,经常会由于磁盘组的增加导致ASM实例提示4031错误。因此建议增加ASM实例的SGA大小。
序号 |
参数名称 |
参数说明 |
建议值 |
1 |
ASM实例SGA_TARGET |
设置ASM实例SGA目标值 |
Oracle11g默认asm实例的SGA大小为272M,修改为4G
两个节点分别操作(+ASM1根据实际名称修改) export ORACLE_SID=+ASM1 sqlplus /as asmdba alter system set sga_max_size = 4096M scope=spfile; |
4.4. 数据库参数调整
序号 |
参数名称 |
参数说明 |
建议值 |
1 |
SGA_TARGET |
SGA设置目标值 |
初始值建议为:(总物理内存* 0.7) * 0.8,后续需要定期分析系统做适应性调整 |
2 |
PGA_AGGREGATE_TARGET |
PGA设置目标值 |
(总物理内存* 0.7) * 0.2,后续需要定期分析系统做适应性调整 |
3 |
SGA_MAX_SIZE |
SGA设置最大值 |
初始值建议为:(总物理内存* 0.7) * 0.8,后续需要定期分析系统做适应性调整 |
4 |
DB_CACHE_SIZE |
数据库缓存大小 |
建议设置一个最小值,初始为SGA的50%左右,具体值需要根据物理内存大小、SGA大小而确定,后续需要定期分析系统做适应性调整 |
5 |
SHARED_POOL_SIZE |
共享池大小 |
建议设置一个最小值,初始为SGA的25%左右,具体值需要根据物理内存大小、SGA大小而确定,后续需要定期分析系统做适应性调整 |
6 |
MEMORY_TARGET |
AMM管理设置内存大小 |
建议值0(11G及以后版本) |
7 |
SESSION_CACHED_CURSOR |
会话缓存游标 |
建议初始300,具体需要根据系统特性而确定,后续需要定期分析系统做适应性调整 |
8 |
LOG_BUFFER |
日志缓存 |
建议初始200MB,后续需要定期分析系统做适应性调整 |
9 |
AUTO_SPACE_ADVISOR |
自动空间审计维护任务 |
建议停用该自动维护任务 |
10 |
_GC_UNDO_AFFINITY |
关闭DRM特性 |
建议值FALSE |
11 |
_GC_POLICT_TIME |
关闭DRM特性 |
建议值0 |
12 |
PARALLEL_FORCE_LOCAL |
并行跨实例查询 |
建议值TRUE |
13 |
OPEN_CURSORS |
每个会话允许最大游标 |
建议初始500,后续需要定期分析系统做适应性调整 |
14 |
PROCESSES |
用户进程 |
建议初始5000,具体需要根据系统特性而确定,后续需要定期分析系统做适应性调整 |
15 |
DB_FILES |
最大允许数据文件 |
建议2000以上(初始为200) |
16 |
UNDO_RETENTION |
保留过期undo段 的时间 |
建议初始10800(3小时),注意undo表空间要足够大(初始最少120GB以上),后续需要定期分析系统做适应性调整 |
17 |
_OPTIMIZER_EXTENDED_CURSOR_SHARING |
关闭ACS特性 |
建议值NONE,规避ACS功能可能引起的BUG |
18 |
_OPTIMIZER_EXTENDED_CURSOR_SHARING_REL |
关闭ACS特性 |
建议值NONE,规避ACS功能可能引起的BUG |
19 |
_SERIAL_DIRECT_READ |
关闭直接路径读 |
建议值NEVER,关闭11G的这个新特性 |
20 |
RECYCLEBIN |
回收站 |
建议关闭 |
21 |
AWR的SNAP_INTERVAL |
采集快照间隔时间 |
建设值30分钟 |
22 |
LOG_ARCHIVE_DEST_1 |
归档路径 |
+ARCH |
23 |
LARGE_POOL_SIZE |
大池大小 |
建议设置为256M |
24 |
AUDIT_TRAIL |
审计痕迹 |
建议值NONE |
4.5. Redo log配置规范
序号 |
指标名称 |
建议值 |
1 |
redo日志组个数 |
每个实例12组以上,具体需要根据系统特性而确定,后续需要定期分析系统做适应性调整 |
2 |
redo日志成员文件大小 |
每组大小1GB,具体需要根据系统特性而确定,后续需要定期分析系统做适应性调整 |
4.6. 控制文件参数调整
序号 |
指标名称 |
建议值 |
1 |
控制文件个数 |
最少2个,最多3个,一个分布DATA01磁盘组,一个分布于OCR磁盘组。 |
4.7. 监听器端口调整
为安全起见,监听器端口不使用默认端口1521,按国网端口规范要求统一使用非缺省端口11521。
4.8. Oracle用户与密码过期调整
Oracle 11g版本中对用户密码过期等默认参数有了修改,从原来的UNLIMITED修改为有效期180天,考虑到业务系统实际情况,为避免影响业务生产,建议禁用密码过期设置,需要将以下参数进行修改。
alter profile default limit password_life_time unlimited; |
4.9. 密码错误10次锁定调整
用户登录数据库失败次数,默认10次,建议设置unlimited。
alter profile default limit failed_login_attempts unlimited; |
5. 安全基线配置
5.1. SNMP服务配置
检查是否安装snmp服务,如果未安装snmp服务,则认为合规,否则需要修改public默认团体字。
vi /etc/snmp/snmpd.conf com2sec notConfigUser default public 修改为 com2sec notConfigUser default strongpass |
5.2. 禁用ctrl+alt+del组合键
vi /etc/inittab 注释如下行ca::ctrlaltdel:/sbin/shutdown***,之后重启系统。 |
5.3. 锁定用户
使用usermod –L锁定以下用户:
adm,lp,mail,uucp,operator,games,gopher,ftp,nobody,nobody4,noaccess,listen,webservd,rpm,dbus,avahi,mailnull,smmsp,nscd,vcsa,rpc,rpcuser,nfs,sshd,pcap,ntp,haldaemon,distcache,apache,webalizer,squid,xfs,gdm,sabayon,named
vi /etc/shadow bin,daemon,adm,lp,sync,shutdown,halt,mail,uucp,operator,games,gopher,ftp,nobody,nfsnobody密码列的*改为!! |
5.4. 配置账户认证失败次数限制
vi /etc/pam.d/system-auth-ac 修改成以下内容: #%PAM-1.0 # This file is auto-generated. # User changes will be destroyed the next time authconfig is run. auth required pam_env.so auth sufficient pam_fprintd.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 500 quiet auth required pam_deny.so account required pam_unix.so account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 500 quiet account required pam_permit.so password requisite pam_cracklib.so ucredit=-1 lcredit=-1 dcredit=-1 try_first_pass retry=3 type= password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5 password required pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so auth required pam_tally.so deny=5 unlock_time=600 no_lock_time |
5.5. 配置SSH方式账户认证失败次数限制
vi /etc/pam.d/sshd 修改成以下内容: #%PAM-1.0 auth required pam_sepermit.so auth include password-auth auth required pam_tally.so deny=5 unlock_time=600 no_lock_time account required pam_nologin.so account include password-auth account required pam_tally.so password include password-auth # pam_selinux.so close should be the first session rule session required pam_selinux.so close session required pam_loginuid.so # pam_selinux.so open should only be followed by sessions to be executed in the user context session required pam_selinux.so open env_params session optional pam_keyinit.so force revoke session include password-auth |
5.6. 配置记录用户对设备的操作(pacct)
chkconfig psacct on service psacct start touch /var/log/pacct accton /var/log/pacct |
5.7. 配置安全事件日志
mkdir /var/adm touch /var/adm/messages chmod 666 /var/adm/messages chmod 755 /var/adm/ /etc/init.d/rsyslog restart |
5.8. 取消重要文件suid和sgid权限
chmod a-s /usr/bin/chage chmod a-s /usr/bin/gpasswd chmod a-s /usr/bin/wall chmod a-s /usr/bin/chfn chmod a-s /usr/bin/chsh chmod a-s /usr/bin/newgrp chmod a-s /usr/bin/write chmod a-s /usr/sbin/usernetctl chmod a-s /bin/mount chmod a-s /bin/umount chmod a-s /sbin/netreport |
5.9. 检查需关闭的服务
kshell、time、ntalk、lpd、sendmail、printer、klogin、nfslock、echo、discard、chargen、bootps、tftp、nfs、ypbind、ident、daytime |
5.10. 配置su权限
mv /etc/pam.d/su /etc/pam.d/su.bak echo "auth sufficient pam_rootok.so">>/etc/pam.d/su echo "auth required pam_wheel.so group=wheel">>/etc/pam.d/su cat /etc/pam.d/su.bak >>/etc/pam.d/su chmod 644 /etc/pam.d/su chmod 644 /etc/pam.d/su.bak |
5.11. 配置数据库用户权限
业务账号不允许DBA权限,仅赋予RESOURCE和connect权限。
grant resource to username; grant connect to username; |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下