安全计算环境-(五)系统管理软件-1
Oracle
对Oracle服务器的等级测评,主要涉及四个方面的内容,分别是:身份鉴别、访问控制、安全审计、入侵防范。
控制点
1.
身份鉴别
为确保服务器的安全,必须对服务器中的每个用户或与之相连的服务器设备进行有效的标识与鉴别。只有通过鉴别的用户,才能被赋予相应的权限,进入服务器操作系统,并在规定的权限范围内进行操作。
a)
安全要求:应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换。
要求解读:应检查Oracle数据库的口令策略,查看其身份鉴别信息是否具有不易被冒用的特点。例如,口令长度、口令复杂度、口令更新周期,新旧口令的替换要求。
检查方法
1.访谈数据库管理员,了解系统账户是否已设置密码,并查看登录过程中系统账户是否使用密码进行验证。
2.查看是否启用了口令复杂度函数(例如,执行“select limit from dba_profiles where profile='DEFAULT' and resource_name='PASSWORD_VERIFY_FUNCTION'”命令)。
3.检查utlpwdmg.sql文件的“--Check for the minimum length of the password”部分中“1ength(password)<”后面的值。
4.检查是否设置了口令过期时限(PASSWORD_LIFE_TIME)。
期望结果
1.登录时需要输入密码。
2.dba_profiles 策略中PASSWORD_VERTRY_FUNCTION不为UNLIMITED。
3.utlpwdmg.sql文件的“--Check for the minimum length of the password”部分“length(password)<”后面的值为8或大于8。
4.dba_profiles策略中PASSWORD_LIFE_TIME 不为UNLTMITED。
b)
安全要求:应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施。
要求解读:数据库系统应配置鉴别失败处理功能,非法登录次数限制,对超过限制值的登录终止鉴别会话或临时禁用账号,当网络登录连接超时时自动退出。
检查方法
1.查看是否启用登录了登录失败限制策略(执行“select limit from dba_profiles where profile='DEFAULT' and resource_name='FAILED_LOGIN_ATTEMPTS'”命令)。
2.查看是否启用了登录失败锁定策略(执行“select limit from dba_profiles where profile='DEFAULT' and resource_name='PASSWORD_LOCK_TIME'”命令)。
3.查看是否启用了登录超时退出策略(执行“select limit from dba_profiles where profile='DEFAULT' and resource_name='IDLE_TIME'”命令)。
期望结果
1.dba_profiles策略中FAILED_LOGIN_ATTEMPTS不为UNLIMITED。
2.dba_profiles策略中PASSWORD_LOCK_TIME不为UNLIMITED。
3.dba_profiles策略中IDLE_TIME不为UNLIMITED。
c)
安全要求:当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听。
要求解读:为防止包括鉴别信息等在内的敏感信息在网络传输过程中被窃听,应限制远程管理。如果业务模式需要使用远程进行管理,则应提供包括SSL在内的方式对传输数据进行加密。
检查方法
1.核查是否启用了SSL加密。
查看服务端Oracle监听器监听的网络协议。使用命令“lsnrctl status<监听器名>”或打开文件$ORACLE_HOME/network/admin/listener.ora,查看LISTENER中PROTOCAL和PORT的配置。
查看客户端的$ORACLE_HOME/network/admin/tnsnames.ora文件,核查端口是否对应于在服务器上为SSL配置的端口,协议是否为TCPS。
查看服务端和客户端的配置文件$ORACLE_HOME/network/admin/sqlnet.ora中WALLET_LOCATION、SQLNET.AUTHENTICATION_SERVICES和SSL的相关配置。
2.查看服务端和客户端的配置文件$ORACLE_HOME/network/admin/sqlnet.ora中以下4个参数的设置,判断是否启用了加密传输功能,核查所使用的加密算法。
SQLNET.ENCRYPTION_SERVER
SQLNET.ENCTRIPTION_TYPES_SERVER
SQLNET.CRYPTO_CHECKSUM_SERVER
SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER
3.若以上结果为具有加密相关配置,则使用抓包工具对登录过程中的数据进行抓包,查看用户口令或口令的散列值是否为密文,从而以判断加密措施是否已经生效。
期望结果
1.若已启用SSL加密,则预期结果如下。
服务端的$ORACLE_HOME/network/admin/listener.ora文件中的监听协议的配置,示例如下。
LISTENER=(DESCRIPTION_LIST=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)(HOST=xxx.xxx.xx.xxx)(PORT=2484))))
PROTOCOL=TCPS--采用基于SSL的TCP协议
PORT=2484--Oracle官方推荐的TCPS协议端口
客户端的tnsnames.ora文件包含如下配置。
orcl=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)(HOST=xxx.xxx.xxx.xxx)(PORT=2484))(CONNECT_DATA=(SERVER=dedicated)(SID=orcl)))
服务端和客户端的sqlnet.ora文件包含如下配置。
WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/u01/app/oracle/wallet)))
SQLNET.AUTHENTICATION_SERVICES=(TCPS,NTS,BEQ)
SSL_CLIENT_AUTHENTICATION=TRUE
SSL_CIPHER_SUITES=
(SSL_RSA_WITH_AES_25_CBC_SHA,SSL_RSA_WITH_3DES_EDE_CBC_SHA)
2.若采用传输功能,则服务端或客户端至少应包含如下配置。
SQLNET.ENCRYPTION_SERVER required
SQLNET.ENCRYPTION_TYPES_SERVER
--此处指定的加密算法应不为已被证明不安全的算法,例如DES、3DES等,推荐使用AES128及以上或国密SM4等算法。
SQLNET.CRYPTO_SERVER required
SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER
--此处指定的加密算法应不为已被证明不安全的算法,例如MD5、SHA1等,推荐使用SHA256及以上或国密3等算法。
3.抓包工具显示的用户口令或口令的散列值为密文(乱码)。
d)
安全要求:应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现。
要求解读:采用组合的鉴别技术对用户进行身份鉴定是防止欺骗的有效方法。在这里,两种或两种以上组合的鉴别技术是指同时使用不同种类的(至少两种)鉴别技术,且其中一种鉴别技术至少应使用密码技术来实现。
检查方法
询问系统管理员,了解系统是否采用由口令、数字证书、生物技术等中的两种或两种以上组合的鉴别技术对用户身份进行鉴别,并核查其中一种鉴别技术是否使用密码技术来实现。
期望结果
至少采用了两种鉴别技术,其中之一为口令或生物技术,另外一种为基于密码技术的鉴别技术(例如使用基于国密算法的数字证书或数字令牌)。