Exadata安全最佳实践原则——Linux OS

原文链接: http://www.dbaleet.org/principal_of_exadata_security_best_practices_linux_os/

在Exadata Overview的白皮书中有这么一段话:

Exadata Database Machine is the world's most secure database system.
Building on the high security capabilities in every Oracle Database, Exadata
Database Machine provides the ability to query fully encrypted databases with near
zero overhead at hundreds of gigabytes of user data per second. This is done by
moving decryption processing from software into the Exadata Storage Server
hardware.

从字里行间隐含的意思来看,似乎是在炫耀Oracle Database Advanced Security Option (ASO)与Exadata Smart Scan结合的威力。毫无疑问,这是Exadata安全中的一个重头戏。但是对于安全问题,往往是千里之堤,溃于蚁穴。任何一个环节的疏忽,都会导致十分严重的后果,

对于Exadata, Oracle的宣传中总喜欢用一个词汇 Ouf of Box (开箱即用), 所以如果用一个词汇来形容Exadata的安全特性,也必然是security out of box。Exadata使用Linux(这里不讨论Solaris), 那么Exadata必然遵循了Linux操作系统安全的最佳实践。那么在操作系统级别的安全特性包括哪些内容呢?

Exadata在操作系统级别主要遵循的原则

我在这里简单的做了一下总结,包括如下几点(排名不分先后):

1. 最小安装的原则

对于Linux而言, 我认为The less, the safer 恒都成立。Linux本身是个大杂烩,其开发者更是来自全球五湖四海各个角落,不同软件包其安全性自然存在差异。 有些软件甚至本身就植入了恶意程序,或者是存在后门。例如曾经就有人发现vsftpd存在后门程序。但是这里并不是说Linux本身是不安全的。Linux本身是大教堂模式的自由软件,Given enough eyeballs, all bugs are shallow。 俗话说: 小心使得万年船。如果是不需要的程序,那么我又有什么理由需要安装呢?对于一台数据库服务器而言,只需要提供数据库服务,而不需要让其提供其它服务,否则必然是违反设计原则的。例如Exadata作为数据库一体机请问有什么理由去安装在安全领域丑名诏著的蓝牙,无线网卡驱动, FTP, telnet等程序呢?Exadata的Oracle Linux上安装的所有软件包都是经过system security team多次审核以后才安装到一体机上的。也许未来Oracle会考虑邀请专业的安全认证机构对其进行认证。

2. 安装启动最少的服务

知道世界上最安全的操作系统OpenBSD安全的奥秘吗?那就是在默认情况下尽量安装较少的服务。 “通常安装的服务越多,发生漏洞的机会也越多”。 Exadata上的Oracle Linux也是遵循这一设计原则的,不是必要的服务,绝对没有也不会安装。

3. 使用安全增强工具

这里说的安全增强工具,在Linux上实际指的是SELinux和iptables。Oracle Database在一定条件下, 实际可以支持SELinux和iptables的,见我之前的文章:  iptables和SELinux是不是必须禁用? 而在Exadata的Cell节点是开启了iptables服务的,并在其中加入了自身的一些安全规则。

4. 网段隔离的原则

Exadata也是非常严格的遵守这一原则的。Exadata一共包括三个网段, 生产网对外提供数据库服务, 管理网是用来Exadata管理员对Exadata进行维护和管理, 而私网则用于各节点内部通信和交换数据。其中生产网和管理网使用不同的子网进行隔离,而私网是一个相对独立的网络。

5. 移除图形界面Xwindow

图形界面为用户提供方便友好UI的同时,也一并将潜在的风险带过来了。通常Windows没有Unix安全并不是因为用户数多的原因,而是Windows使用的图形界面并不安全。当然这并不能一概而论,但是图形界面库的0day漏洞数绝对是一个非常客观的数目。Exadata的管理并不需要图形界面,所有的工作都可以通过命令行来完成。实在要使用图形界面在其上启动VNC Server。

6. 对用户和密码进行加固

默认的Oracle Linux的安全策略对于普通的用户绰绰有余,但是对于一台放置核心数据的数据库服务器可能并不够。因为数据的价值越大,其相对潜在的风险也就越多。对用户和密码进行加固主要是为了防止暴力破解之类的方法给系统带来的风险。

7. 移除或者限制SSH

不允许SSH远程登录非常简单, 关闭sshd服务即可。安全固然安全,但是给管理带来了诸多不便。所以通常不会关闭SSH,而是对SSH登录做一些限制,例如禁止root登录,使用SSH-2协议。只需要在/etc/ssh/sshd_config文件中加上两行:

PermitRootLogin no
Protocol 2

或者创建一个sshgroup, 然后只让sshgroup组里面的用户使用SSH登录。
同样只需在/etc/ssh/sshd_config文件中加上一行:

AllowGroups sshusers

8. 保证软件包保持最(较)新

新的软件包,不仅仅对程序本身的bug做了修复,同时也已发现的安全漏洞进行了修复。将操作系统的软件包保持在最新或者较新的状态有利于保障系统的安全。对于Exadata,可以定期去查看一下文档888828.1, 这个文档会定期进行更新,当然也会列出一些security issues。在MOS上提供了一个针对各类安全漏洞工具扫描出来的Exadata系统漏洞的反馈, 见Responses to common Exadata security scan findings [ID 1405320.1]。 对于Oracle Linux,以下两个站点需要重点关注:一个提供了CVE, 另外一个提供了Errata。

http://linux.oracle.com/cve
http://linux.oracle.com/errata

9. 移除特殊权限SUID/SGID

可以使用以下命令查找出来具有SUID和SGID权限的文件:

find / \( -perm -4000 -o -perm -2000 \) -print

然后通过chmod -s filename禁用。注意前提是你需要非常了解你在做什么,以及这些文件本身的作用,才能将其SUID/SGID权限禁用。通常你无需做任何动作,因为Exadata安装完成以后已经将不需要的权限移除了。特别注意Cell节点上不允许进行此类操作。

10. 尽量移除和不使用ipv6

ipv6可能潜在安全风险,并且当前Oracle RAC不支持ipv6,所以在Exadata上也不需要ipv6。

11. 对NTP进行优化和加固

对于大多数系统而言, NTP都会带来一些不必要的开销。一种好的方式就是将ntpdate命令写入crontab中,每隔一段时间定期与内网NTP服务器进行同步。而通常只有这台内网的NTP服务器才可以与外网的可信任的NTP服务器进行时间同步。

12. 对内核参数进行加固

这篇文章提供了很详尽的内核参数加固方案。我这里照搬之, 仅供参考:

#Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and
# sysctl.conf(5) for more details.

# Disables packet forwarding
net.ipv4.ip_forward=0

# Disables IP source routing
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.lo.accept_source_route = 0
net.ipv4.conf.eth0.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0

# Enable IP spoofing protection, turn on source route verification
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.lo.rp_filter = 1
net.ipv4.conf.eth0.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# Disable ICMP Redirect Acceptance
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.lo.accept_redirects = 0
net.ipv4.conf.eth0.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0

# Enable Log Spoofed Packets, Source Routed Packets, Redirect Packets
net.ipv4.conf.all.log_martians = 0
net.ipv4.conf.lo.log_martians = 0
net.ipv4.conf.eth0.log_martians = 0

# Disables IP source routing
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.lo.accept_source_route = 0
net.ipv4.conf.eth0.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0

# Enable IP spoofing protection, turn on source route verification
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.lo.rp_filter = 1
net.ipv4.conf.eth0.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# Disable ICMP Redirect Acceptance
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.lo.accept_redirects = 0
net.ipv4.conf.eth0.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0

# Disables the magic-sysrq key
kernel.sysrq = 0

# Decrease the time default value for tcp_fin_timeout connection
net.ipv4.tcp_fin_timeout = 15

# Decrease the time default value for tcp_keepalive_time connection
net.ipv4.tcp_keepalive_time = 1800

# Turn off the tcp_window_scaling
net.ipv4.tcp_window_scaling = 0

# Turn off the tcp_sack
net.ipv4.tcp_sack = 0

# Turn off the tcp_timestamps
net.ipv4.tcp_timestamps = 0

# Enable TCP SYN Cookie Protection
net.ipv4.tcp_syncookies = 1

# Enable ignoring broadcasts request
net.ipv4.icmp_echo_ignore_broadcasts = 1

# Enable bad error message Protection
net.ipv4.icmp_ignore_bogus_error_responses = 1

# Log Spoofed Packets, Source Routed Packets, Redirect Packets
net.ipv4.conf.all.log_martians = 1

# Increases the size of the socket queue (effectively, q0).
net.ipv4.tcp_max_syn_backlog = 1024

# Increase the tcp-time-wait buckets pool size
net.ipv4.tcp_max_tw_buckets = 1440000

# Allowed local port range
net.ipv4.ip_local_port_range = 16384 65536

 

13. 增强共享文件系统的安全性

如果需要使用NTP一类的共享文件系统,注意控制器挂载的权限以及NFS本身可能存在一些安全风险,防止提权的发生。具体可以参考这篇文章针对NFS安全提供了一个很好的向导。

以上就是简要介绍了Exadata的最佳安全的实践原则,对Linux进行安全加固也同样适用,以上提供的命令行请不要到生产系统轻易尝试,除非你清楚的知道你在做什么。

以上

Comment

*

沪ICP备14014813号

沪公网安备 31010802001379号