有时,不必要的安全措施会导向更不安全。例如,增加口令强度导致用户不得不将口令记录,并存放在不安全的地方。
安全象洋葱,一层又一层。
Facility Security
是基础,防止“未授权的物理访问”。如是否有门禁,UPS等。
参考:
Infrastructure Security
SLA是否满足你的需求。
DNS, NTP, 网络,IDS,备份设备等。
人员的培训,审计。人员离职时资源的撤销和清除。
不要让一个人掌握所有的资源。
大家需要遵守流程,将改变记录下来。
参考Guide for Security-Focused Configuration Management of Information Systems
最新的固件,补丁,磁盘加密,防病毒,hardening。
记录所有的硬件信息,包括MAC,IP,主机,接口,位置等
type 1: bare metal
type 2:guested
是否与数据库兼容,查这里
口令策略,内核参数,文件权限等。
Oracle Linux 7 的安全check list。
Oracle数据库建议Linux,最好是Oracle Linux。
Oracle Linux是基于Red Hat Linux distribution的,是相互兼容的。
可参考Security Guide for Release 7
Job - 岗位,如DBA, OS管理员,备份管理员等
User Account - 一人一账号,不要共享账号,因无法审计;用户多时,使用集中式用户管理,如LDAP。
Nonrepudiation - 不可否认
NTP需设置正确,对审计重要。
如果用户需要的权限是临时的,可以临时赋予其权限或角色,事后撤销。
口令管理可参考Oracle Privileged Account Manager
12c最大的改变是多租户,安全方面,应用无需改变,PDB可单独设置安全策略,隔离性好。
现在有OCI了,当时只是基于OEM来做IaaS和PaaS。
ORACLE_BASE和ORACLE_HOME。
例如:
$ echo $ORACLE_HOME
/opt/oracle/product/19c/dbhome_1
$ echo $ORACLE_BASE
/opt/oracle
每一个Oracle HOME可以有多个CDB(数据库)。
技术上,一个Oracle HOME就够,但为了不相互影响,可以为不同租户建立单独的Oracle HOME。当然,一个Oracle HOME的好处就是打补丁只需一次,但多个的好处是可以滚动升级。
文件一致性工具,如Linux下的AIDE,确保文件没被修改(权限靠记录基线,数据靠校验和)。使用参见这里
$ sudo yum install aide
$ sudo aide -v
Aide 0.15.1
Compiled with the following options:
WITH_MMAP
WITH_POSIX_ACL
WITH_SELINUX
WITH_PRELINK
WITH_XATTR
WITH_E2FSATTRS
WITH_LSTAT64
WITH_READDIR64
WITH_ZLIB
WITH_GCRYPT
WITH_AUDIT
CONFIG_FILE = "/etc/aide.conf"
定期检查和验证,OEMCC有合规性检查。
Listener接受来自客户端的网络连接并转发到server process。
一些建议:
不应以明码存于文件,应使用Secure External Password Store(wallet)或存于Key Vault。
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
remote_os_authent boolean FALSE
remote_os_roles boolean FALSE
remote_login_passwordfile string EXCLUSIVE
audit_trail string NONE
sql92_security boolean TRUE
sec_case_sensitive_logon boolean TRUE
sec_max_failed_login_attempts integer 3
...
OEM有Sensitive Data Discovery工具。
特权用户/SYS% 用户
Schema 用户
Non-person entities (NPE) 或批处理程序账户。NPE指与数据库交互的实体,但非真人。
Named user accounts或named account,这就是最常用的用户了。
如果数据库多,用户多,还是建议用集中式的LDAP来管理用户,如OUD。
为不同类型的用户建立不同的Database Profile。
最小权限和不可抵赖。
建议先赋权到角色,再赋角色到用户。这样可以评估用户的每一个权限是否必要。
保护应用数据的有效手段是DBV。建议为为shcema创建一个realm,然后为角色创建一个realm。
DBV command rule。12c之前使用VPD。
DBMS_NETWORK_ACL_ADMIN PL/SQL package定义网络ACL。
OS层,使用wrap加密PL/SQL。
$ cat mySourceFile.sql
create or replace procedure test1(i in number) as
begin
dbms_output.put_line('输入参数是'||to_char(i));
end;
$ wrap iname=mySourceFile.sql oname=myWrappedFile.plb
$ cat myWrappedFile.plb
create or replace procedure test1 wrapped
a000000
1
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
7
64 ae
h17segXOVFAp6NezNxycrE6yK3Ywg5nnm7+fMr2ywFwWoWLRf3elw6XSXqWZgTLAsiXDuHSL
BsDAMv7ShgbAUpuySv4osr3nsrMdBjAsriTqsoEf+BskeUySoJ0pMXeycsnY6mQmvQjQvzO4
dCWld3egiwbAgccti+CmphShytg=
/
SQL> connect / as sysdba
Connected.
SQL> @myWrappedFile.plb
Procedure created.
SQL> exec test1(1)
PL/SQL procedure successfully completed.
PL/SQL层,可使用DBMS_DDL.CREATE_WRAPPED。
可用于没有实施SQL Injection功能的老系统。
支持Native Network Encryption和SSL/TLS Encryption。前者依赖Oracle Net Services。
12c后,网络数据加密无需license。
需要在客户端和服务器上的sqlnet.ora文件中设置。可以用Wireshark验证网络加密是否生效。
使用TDE。小型系统可使用wallet,大型系统可使用Oracle key vault。
RMAN支持备份加密,但需要license。
支持以下3中加密方式:
SELECT algorithm_name FROM v$rman_encryption_algorithms;
ALGORITHM_NAME
----------------------------------------------------------------
AES128
AES192
AES256
审计数据应视为只读数据。
TA, FGA, OUA.
单独的产品。支持第三方产品。大规模时建议使用。
由于占空间等资源,审计数据应定期备份归档。
locking down也可认为是hardening,就是去除不必要的模块,权限,服务等,以减少攻击界面。
lockdown也会与SoD结合。
Defense Information Systems Agency (DISA) Security Technical Implementation Guides (STIGs)。参考https://www.newnettechnologies.com/compliance/disa-stig.html
OEMCC有合规性检查工具。参见Enterprise Manager Cloud Control Oracle Database Compliance Standards。
National Information Assurance Partnership (NIAP) Protection Profiles (PP)
custody - 监护,保管,拘押。
补丁也是为了安全,需要先在测试系统上打。
监控与报警是系统的眼睛。
需与审计数据关联。
使用OEMCC监控合规性,性能等。
可用性是系统正常运行的时间。
主备可用性和主主可用性(指RAC,不是双活)。
Data Pump,RMAN