Linux用户管理、通讯加密、安全认证、防火墙配置

达梦数据库安全管理与应用总结

数据库安全的核心和关键是其数据安全。由于数据库存储着大量的重要信息和机密数据,而且在数据库系统中大量数据集中存放,供多用户共享,因此,必须加强数据库访问的控制和数据安全防护。
DM的安全管理为保护存储在DM数据库中的各类敏感数据的机密性、完整性和可用性提供必要的技术手,防止对这些数据的非授权泄漏、修改和破坏,并保证被授权用户能按其授权访问所需要的数据。

一、系统安全

在DM数据库中,主要从dmdba用户管理、通讯加密、存储加密、安全认证、防火墙配置五个方面来维护系统安全。

(1)dmdba用户管理

新增用户:

/etc/passwd文件存放系统的用户,每一行都代表一个账号,不可随意删除。

/etc/shadow文件用户存放用户的密码

/etc/group用来记录GID与组名的对应

图片[1]-Linux用户管理、通讯加密、安全认证、防火墙配置-唐朝资源网

图 1 登录流程图

目录与文件权限:

Linux系统是多用户、多任务环境。因此文件的管理权限对各个用户具有较保密的文件数据十分重要。

共有两种方式可以改变文件权限:

一是数字类型改变文件权限,例如命令 chmod -R 755 dmdbms_98,其中755是客户要求设置的文件权限。

二是符号类型改变文件权限,例如命令 chmod -R u=rwx,go=rx dmdbms_98。

可执行权限:

目录的可执行权限代表用户能否进入该目录。x代表改文件具有可以被系统执行的权限。

(2)通讯加密

设置通讯加密算法可以使通讯内容从明文转变为密文,通讯更加安全可靠。

但目前来说,有一点bug,即服务器端设置通信加密COMM_ENCRYPT_NAME设置为AES256或AES192相关的加密算法时,windows环境上的客户端无法连接实例。

(3)存储加密

List item

为了防止用户直接通过数据文件获取用户信息,DM提供了全面的数据加密的功能,包括:

①透明加密

②半透明加密

③非透明加密

存储加密在保证数据文件安全性的同时,也会带来一定的性能影响,不同的加密算法对性能的影响各有不同,用户需要根据自己的需求来决定是否进行加密以及加密算法的选择。

透明加密:

在透明加密中,密钥生成、密钥管理和接加密过程有数据库管理系统自动生成,用户不可见。其主要目的是保证存储在数据文件中的敏感数据的安全,并不能保护合法用户的个人私密数据。共分为全库加密、表空间透明加密、表列透明加密、存储过程加密、存储函数加密、触发器透明加密、包加密、类加密等。

可以通过查询动态试图V$CIPHERS得到DM支持的加密算法。

半透明加密:

半透明加密的目的主要是保证存储在数据文件中的敏感数据的安全,对用户插入的数据进行保护,合法用户的个人私密数据不能通过代码加解密。

步骤如下:

1.使用SYDBA在TEST模式下插入数据

2.使用TEST用户登录查询,用户仅能查看到自己插入的数据。

非透明加密:

非透明加密通过用户调用存储加密函数来进行,可以参考达梦官方手册《DM8安全管理》。

·DM对非透明加密的支持是通过对用户提供加解密接口实现的;

·用户在使用非透明加密时,需要提供密钥并调用加解密接口;

·采用非透明加密可以保证个人私密数据不被包括DBA在内的其他人获取;

·非透明加密通过用户调用存储加密函数来进行,DM提供了一系列的存储加密函数,还提供了一个数据加密包DBMS_ORFUSCATION_TOOLKIT;

·使用包内的过程和函数之前,如果还未创建系统包,请先调用系统过程创建系统包;

(4)安全认证

SSL认证:

达梦数据库使用ssl通信加密,需要在达梦数据库服务端配置ENABLE_ENCRYPT 和 COMM_ENCRYPT_NAME 参数来指定,客户端以服务端采用的通信方式与其进行通信,ENABLE_ENCRYPT为0,代表不加密,配置为1代表ssl加密,2代表ssl认证;COMM_ENCRYPT_NAME值为空,未配置加密算法,配置的值为V$CIPHERS中CYT_NAME列中支持的算法值。

SSL认证如果开启,即ENABLE_ENCRYPT设置为2,此时如果服务器SSL环境没有配置则服务器无法正常启动,客户端SSL环境没有配置则无法连接服务器。

达梦数据库配置SSL认证加密:

1、配置openssl配置文件

2、创建配置文件中对应的主要目录和文件

3、生成CA私钥和根证书

4、生成服务器私钥和被CA签名的证书

(1)生成私钥文件;如果服务端的私钥是带存储密码的,那么启动服务器的时候一定要使用命令行方式来启动,即dmserver c:dmdbmsdataDAMENGdm.ini,否则不能开启通信加密认证,因为只有这种方式才会让输入服务端私钥的密码。

(2)生成证书签发申请;

(3)使用根证书和签发申请生成证书;

(4)将证书格式转换为x509格式;

(5)将CA自签名的证书拷贝到server_ssl目录中。

5、生成客户端用户私钥和被CA签名的证书

(1)生成私钥文件;

(2)生成证书签发申请;

(3)使用根证书和签发申请生成证书;

(4)将生成的X509格式的client-key.pem和client-cert.pem合并转换为pkcs12格式的文件client-pkcs.p12;

(5)生成JDBC访问需要的.keystore文件;

(6)将CA自签名的证书拷贝到client_ssl/SYSDBA目录中;

6、部署SERVER端证书

7、部署client端证书

8、数据库启用SSL认证和通信加密

是否使用通信加密以DM数据库服务器端的设置为准,即通过设置服务器配置文件dm.ini中的ENABLE_ENCRYPT或者COMM_ENCRYPT_NAME参数来指定,ENABLE_ENCRYPT可以开启传输层通讯加密,COMM_ENCRYPT_NAME可以开启应用层消息通讯加密,两个层次上的加密是互不干扰,互不影响,可以同时开启这两个层次上的加密,也可以开启其中一个linux达梦数据库运维命令,如果开启传输层消息加密需要配置SSL证书。客户端以服务器采用的通信方式与其进行通信。

ENABLE_ENCRYPT:取值0、1和2,含义义分别为:

0表示在传输层不开启SSL认证和SSL通信加密;

1表示在传输层开启SSL认证和SSL通信加密;

2表示在传输层仅开启SSL认证,但不开启SSL加密。

COMM_ENCRYPT_NAME参数用来指定应用层消息通信的加密算法名,指定加密算法后,即可开启应用层通信加密(无需配置ENABLE_ENCRYPT)。如果为空则不进行通信加密;如果给的加密算法名错误,则使用加密算法DES_CFB。应用层的这种加密非常适合两端缺少数字证书的情况。

DM支持的加密算法名可以通过查询动态视图V$CIPHERS获取。

制作证书:

脚本文件需要在windows平台执行,不需要安全Openssl软件,将压缩包解压后可直接执行脚本制作证书,制作出来的证书可跨平台使用。注意要将压缩包中的client相应的账号目录删除,如果没有删除会在已有的账号目录生成新的账号目录;拷贝的时候选择新生成的目录即可。

1、下载脚本包OpenSSL_WIN.zip,执行压缩包里的三个脚本文件完成证书制作;

2、配置证书;

安全认证还包括SSL认证DISQL登录测试、SSL管理工具认证登录测试、JDBC程连接配置等。

(5)防火墙配置

硬件防火墙:

根据网络拓扑图确认是否经过硬件防火墙,如果不经过则不需要设置。

Centos 6 防火墙

Linux防火墙是由linux内核提供,直接通过内核处理。不同内核版本所使用的防火墙软件不一样。

二、用户安全

(1)密码复杂度设置

密码策略决定了新建用户的密码复杂度,有ini参数PWD_POLICY决定,默认为2,即密码长度不小于9。

系统支持的口令策略有:

·0无策略

·1禁止与用户名相同

·2口令长度不小于9

·4至少包含一个大写字母(A-Z)

·8至少包含一盒数字(0-9)

·16至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号)

口令策略可单独应用,也可组合应用。组合应用时,如需要应用策略2和4,则设置口令策略为2+4=6即可。从20201107的114版本开始linux达梦数据库运维命令,PWD_POLICY为隐藏参数,必须通过命令进行修改。

系统管理员可通过查询VSPARAMETER动态视图查询PWD_POLICY的当前值。

(2)用户资源限制

IP地址和用户时间段限制(仅限安全版)

允许IP和禁止IP用于控制此登录是否可以从某个IP访问数据库,其中禁止IP优先。

1)允许时间段和禁止时间段用于控制此登录是否可以在某个时间段访问数据库,其中禁止时间段优先。设置的时间段中的日期和时间要分别用双引号括起来。在设置时间段是,有两种方式:

·具体时间段

·规则时间段

(3)运维账号管理

默认的sysdba用户有DBA、RESOURCE、PUBLIC、VTL、SOI权限,考虑到用户优肯修改sysdba密码后遗失密码且无法找回的情况,我们通常需要新增一个运维用户,以便在紧急情况时使用。

图片[2]-Linux用户管理、通讯加密、安全认证、防火墙配置-唐朝资源网

三、各版本安全功能剖析

(1)安装时key的使用

低版本可通过udp_lic参数(如果使用的版本存在这个参数)使用高版本的key。(仅限2.98之后的版本支持)

使用参数正常启动一次数据库后,下次启动不需要附带此参数。

(2)版本升级—相容性

图片[3]-Linux用户管理、通讯加密、安全认证、防火墙配置-唐朝资源网

无代表未进行测试;支持代表版本升级兼容;不支持代表版本升级不相容。

(3)物理备份还原

·使用非默认key时,通过dmrman物理备份还原各版本相容性

图片[4]-Linux用户管理、通讯加密、安全认证、防火墙配置-唐朝资源网

·使用默认key时物理还原各版本相容性

四、数据库加解密应用方案

非透明加密字段适合varchar2、varchar、VARBINARY、char字段的解密函数,返回类型为varchar、VARBINARY、DATE、DATETIME等类型。

达梦数据库加解密应用方案为加密字段设计、第三方硬件加密引擎、加密对性能影响等。

(1)第三方硬件引擎加密—渔翁加密

配置好硬件加密引擎后,可在存储加密、通讯加密等配置中使用。

前提条件:

·渔翁应用商准备如下:渔翁应用编程头文件;渔翁应用编程动态库。

·达梦需准备如下:安装达梦数据库,暂时不要初始化;原文家enc_dll_pcies.c;头文件crypto_engines.h。

·修改宏定义

根据卡的型号,修改源文件中的宏定义,卡的型号及宏定义由卡厂商提供告知,也可通过textcard程序查看型号

·准备源文件

·准备头文件

·准备动态库文件

·编译加密引擎库文件

·将libdmencrypto.so和动态库libfmapiv100.so都拷贝到达梦的dmdbms/bin和dmdbms/bin/external_crypto_libs目录下各一份。

·密码卡安装驱动,并用卡上提供的textcard程序测试卡正常工作,退出testcard程序后,将/tmp/下的card_lg和FM_PROCESS*.lg文件移动或删除。

·设置好PATH和LD_LIBRARY_PATH,指向dmdbms/bin下和dmdbms/bin/external_crypto_libs路径,然后在终端窗口启动dbmserver,也可以直接在root/.bash_profile里设置使之全局生效,避免打开新的终端环境后环境变量失败。

·disql登录后,用select * from V$external_ciphers可以看到卡上的“FM_SM”大头的加密算法。

卡的使用注意事项:

·避免热插拔操作,插拔密码卡时切断主机电源。

·接触密码卡时,请务必采取静电措施。

·PCI-E/PCI插槽注意防尘。

·使用前,请务必保持PCI-E卡上金手指部分的清洁。

·请不要将PCI-E密码卡插入PCI-X插槽

·保持密码卡的正确插入,固定螺丝钉拧紧保持接触稳定。

·使用前请正确安装驱动程序并重新启动电脑。

·根据使用的功能插入正确的密码卡专用key。

关于加密卡的日志结构:

·调用加密卡时会在/tmp下生成card.lg和FM_PROCESS*.lg两种日志文件;

·其中card.lg记录的时用户操作时的各种数据,默认日志为ERR;

·IFM_PROCESS*.kg等文件则是文件锁和进程所,用于加密卡内部逻辑处理使用;

关于非root用户调用加密卡的步骤:

·必须是root安装驱动,装完后开卡验证是否安装成功

·开卡成功后root用户删除/tmp/下的card.lg和FM_PROCESS*.lg相关日志

·root用户执行命令chmod -R 777 /dev/FM_CPC_DRV*

·root用户给使用的测试程序和依赖库加上权限chmod -R 777 ./libfmapiv100.so

·切换非root用户就能开卡了

(2)加密对性能影响

数据库测评管理服务器安装64位CentOS操作系统;数据库服务器的操作系统安装64位CentOS操作系统;使用交换机将测评服务器与数据库服务器进行连接。测试环境用来进行所有的指标项测试。

通过对达梦数据库管理系统V8进行功能测试和性能测试,可以得出以下结论:

1)在5个列开启按列存储的条件下,数据库TPC-C性能压力基准测试性能相对于不开启加密损耗不超过30%;

2)在5个列开启按列存储的条件下,数据库TPC-C性能压力基准测试性能相对于不开启加密损耗不超过30%前提下,数据库克实现的数据加解密操作性能每秒加密操作达到3万次以上;

© 版权声明
THE END
喜欢就支持一下吧
点赞166赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容