39、优化Linux以适配Oracle数据库及网络安全配置

优化Linux以适配Oracle数据库及网络安全配置

1. 启用网络服务缓存守护进程(nscd)

在使用NAS设备或NFS挂载点时,网络故障可能会对系统造成影响。启用nscd可以更好地应对这些网络故障。

问题

希望启用nscd以更好地容忍与NAS设备或NFS挂载点相关的网络故障。

解决方案
  • 修改配置文件 :首先修改 /etc/nscd.conf 配置文件,将 passwd group netgroup enable-cache 行修改为 no ,示例如下:
# cat /etc/nscd.conf |grep enable-cache |grep -v \^# |sort -k3
enable-cache      netgroup   no
enable-cache      group      no
enable-cache      passwd     no
enable-cache      services   yes
enable-cache      hosts      yes
  • 启动服务 :以root或特权用户身份,使用 service start nscd 命令启动nscd服务。
  • 设置开机自启 :使用 chkconfig 命令使nscd在系统重启时自动启动:
# chkconfig –level 345 nscd on
  • 确认服务启用 :使用 nscd -g 命令打印当前配置统计信息,确认nscd已启用。使用 -? 参数查看nscd的所有有效选项。
  • 手动安装(最小化安装情况) :如果进行了最小化OS安装,使用以下 yum 命令手动安装nscd:
# yum –y install nscd
工作原理

nscd是一个占用资源较少的守护进程,为最常见的名称服务请求提供缓存功能。当出现网络故障时,nscd可以发挥作用,并且启用它所需的更改最少。Oracle数据库服务器可能承载大量基于网络的工作负载,并进行大量名称查找,nscd的目标是减少服务请求的延迟,并减少对共享基础设施的影响。在使用DNS、NIS、NIS+、LDAP等命名服务时,也可以期待性能提升。

2. 正确对齐磁盘分区

很多数据库管理员(DBAs)可能没有意识到需要在数据库磁盘上创建分区,而正确对齐的分区可以提高数据库工作负载的性能。

问题

需要创建数据库磁盘分区,以提高数据库工作负载的性能。

解决方案

有几种方法可以正确配置分区对齐,如 parted fdisk sfdisk 。这里以 parted 分区编辑器为例,在LUN上创建一个用于存放Oracle数据库文件的分区。

在Oracle Database 11g中,Oracle ASM磁盘的最大大小不能超过2TB。从Oracle Database 12c开始,对于8MB的分配单元(AU)大小,ASM磁盘的最大大小可达32PB。不同AU大小对应的最大ASM磁盘大小如下表所示:
| AU大小 | 最大ASM磁盘大小 |
| ---- | ---- |
| 1MB | 4PB |
| 2MB | 8PB |
| 4MB | 16PB |
| 8MB | 32PB |

使用 parted 命令创建1MB对齐的分区示例:

# /sbin/parted -s /dev/sdb mklabel gpt mkpart /dev/sdb1 asm1 2048s 32.0GB

参数说明:
- -s 选项:指定以脚本方式执行命令,而非交互式提示。
- mklabel gpt :创建GUID分区表。
- mkpart :在指定设备上创建分区,指定文件系统类型、起始点和结束点。
- 2048s :表示2048个扇区,每个扇区512字节,相当于1MB。

创建分区后,使用以下命令检查分区对齐设置:

# /sbin/parted -s /dev/sdb print
工作原理

未对齐的ASM磁盘可能导致Oracle数据库工作负载性能不佳。在Linux上,默认情况下前63个块保留给主引导记录(MBR),第一个数据分区的偏移量为31.5KB(63块 * 512字节),这可能导致许多存储阵列的内存缓存或RAID配置出现未对齐情况,从而由于重叠I/O导致性能不佳。对于Oracle数据库,建议分区偏移量为1MB或4MB。

由于 parted 可以处理大于2TB的磁盘大小,因此建议使用 parted 而不是 fdisk sfdisk 。在Oracle Database 12c之前,由于ASM LUN大小不能超过2TB,可以灵活使用 sfdisk ;但从Oracle Database 12c开始,LUN大小限制解除,需要迁移到 parted 等命令。

3. 网络安全通信基础

在当今的信息时代,网络安全至关重要。无论是共享机密军事信息,还是日常的银行交易、数据库管理,都需要确保网络通信的安全性。

在过去,一些网络协议(如telnet、rlogin和rsh)以及命令(如rcp)由于缺乏安全特性,无法满足现代网络安全的需求。1995年推出的SSH v1在1996年被SSH v2取代,SSH是一种网络协议,它使用安全通道在计算机之间传输加密数据,取代了旧的网络协议和命令。

4. 设置SSH
问题

希望配置SSH,以便与远程Linux/Solaris服务器建立安全加密的连接。

解决方案
  • 检查所需包 :在配置SSH之前,确保安装了所需的包: openssh openssh-server openssh-clients openssh-askpass 。使用以下 rpm 命令验证服务器上安装的SSH包:
# rpm -qa | grep -i openssh
openssh-5.3p1-94.el6.x86_64
openssh-clients-5.3p1-94.el6.x86_64
openssh-server-5.3p1-94.el6.x86_64
openssh-askpass-5.3p1-94.el6.x86_64

可以使用 ssh -V 命令检查服务器上安装的SSH类型和版本。

  • 启动SSH守护进程 :在连接到远程服务器之前,需要确保SSH守护进程(sshd)正在运行。可以使用以下命令启动sshd:
# service sshd start

也可以通过调用脚本启动:

# /etc/rc.d/init.d/sshd start

如果sshd已经启动,可以使用以下命令重启:

# service sshd restart

对于Solaris系统,使用以下命令启用和禁用ssh服务:

# svcadm enable network/ssh
# svcadm disable network/ssh

使用以下命令验证ssh服务的状态:

# svcs -v ssh
  • 设置开机自启 :可以使用 chkconfig ntsysv system-config-services 来激活sshd,使其在Linux服务器重启时自动启动。
    • chkconfig命令 :使用 --level 选项指定启动的运行级别,例如:
# chkconfig --level 2345 sshd on
- **ntsysv命令**:同样使用 `--level` 选项指定运行级别,例如:
# ntsysv --level 35

启动 ntsysv 后,使用箭头键导航到 sshd ,按空格键切换服务状态,按Tab键高亮 Ok 按钮并按Enter保存更改。
- system-config-services命令 :启动该工具:

# /usr/sbin/system-config-services

在GUI界面中,滚动到 sshd 服务,勾选相邻的框以激活它,还可以在该对话框中启动、停止和重启 sshd 服务,检查状态和PID。

工作原理

大多数主要的Linux/Solaris发行版默认包含所需的SSH包,也可以从任何Linux/Solaris包下载站点(如http://www.openssh.com)下载。

安装SSH包后,可以激活并运行sshd守护进程,它将准备好接受SSH连接。可以对其进行一些更改,例如修改sshd监听的默认端口号(默认端口号为22,可通过修改 /etc/ssh/sshd_config 文件中的 Port 参数来更改)。

/etc/ssh/sshd_config 是Linux/Solaris服务器的SSH系统范围配置文件, /etc/ssh/ssh_config 是SSH客户端的配置文件。如果对 /etc/ssh/sshd_config 文件进行更改,需要使用 service sshd reload service sshd restart 命令重新加载sshd。

使用 chkconfig --list sshd 命令可以验证sshd配置的启动运行级别,使用 ps -ef | grep -v grep | grep ssh 命令可以验证对应的sshd进程是否正在运行。如果要禁止root用户通过SSH登录,可以在 /etc/ssh/sshd_config 文件中将 PermitRootLogin 参数设置为 no ,非root用户登录后可以使用 su - root sudo 命令。

优化Linux以适配Oracle数据库及网络安全配置

5. 生成主机密钥

在SSH连接中,主机密钥起着关键作用。当远程Linux/Solaris服务器的SSH主机密钥丢失、损坏或在安装SSH包时未生成,就需要生成新的SSH主机密钥。

问题

远程Linux/Solaris服务器的SSH主机密钥丢失、损坏或未生成,需要生成新的主机密钥。

解决方案

以root用户登录并使用 ssh-keygen 命令生成新的SSH主机密钥。需要使用 -t 选项指定要生成的密钥类型,并使用 -f 选项指定密钥文件名。如果省略 -f 选项,将为OS账户root创建公钥,而不是服务器的SSH主机密钥。

以下是生成RSA类型SSH主机密钥的示例:

root@BLSOL02:~# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
Generating public/private rsa key pair.
/etc/ssh/ssh_host_rsa_key already exists.
Overwrite (yes/no)? yes
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /etc/ssh/ssh_host_rsa_key.
Your public key has been saved in /etc/ssh/ssh_host_rsa_key.pub.
The key fingerprint is:
03:bc:53:70:ff:d2:c8:f5:2d:2e:6d:07:3d:3d:1a:66 root@BLSOL02

生成DSA类型SSH主机密钥的示例:

root@BLSOL02:~# ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
Generating public/private dsa key pair.
/etc/ssh/ssh_host_dsa_key already exists.
Overwrite (yes/no)? yes
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /etc/ssh/ssh_host_dsa_key.
Your public key has been saved in /etc/ssh/ssh_host_dsa_key.pub.
The key fingerprint is:
ee:0d:88:61:1a:27:20:2e:69:27:7b:bc:70:de:a2:5c root@BLSOL02

为了安全起见,建议在创建SSH主机密钥时提供密码短语,以防止非root用户通过 -y 选项查看密钥。

工作原理

SSH主机密钥就像一个主密钥,用于加密和解密在远程Linux/Solaris服务器和发起SSH连接的客户端计算机之间传输的数据,确保连接安全,避免中间人攻击。

创建新的SSH主机密钥时,需要根据SSH版本和加密算法类型(RSA或DSA)选择合适的密钥类型。RSA和DSA都支持一定的安全方法和不同的加密算法,在相同密钥长度下,它们的安全性相似,但在加密和解密速度上没有明显的优劣之分。

SSH主机密钥的有效类型包括 rsa1 (SSH v1的RSA)、 rsa dsa (SSH v2)。如果服务器仅支持SSH v2,需要在 /etc/ssh/sshd_config 文件中将 Protocol 参数设置为 2

使用 -t rsa 选项运行 ssh-keygen 会创建 /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_rsa_key.pub 两个文件;使用 -t dsa 选项会创建 /etc/ssh/ssh_host_dsa_key /etc/ssh/ssh_host_dsa_key.pub 文件。其中, ssh_host_rsa_key ssh_host_dsa_key 包含私钥和公钥,而 .pub 文件只包含公钥,公钥用于加密数据,私钥用于解密数据。

首次登录远程服务器时,会提示确认服务器的SSH主机密钥指纹。如果接受,将在本地服务器的 $HOME/.ssh/known_hosts 文件中记录服务器的SSH主机密钥。

使用以下命令可以确定远程服务器的SSH密钥指纹:

root@BLSOL02:~# ssh-keygen -l -f /etc/ssh/ssh_host_dsa_key.pub
1024 ee:0d:88:61:1a:27:20:2e:69:27:7b:bc:70:de:a2:5c /etc/ssh/ssh_host_dsa_key.pub
root@BLSOL02:~#
root@BLSOL02:~# ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub
2048 03:bc:53:70:ff:d2:c8:f5:2d:2e:6d:07:3d:3d:1a:66 /etc/ssh/ssh_host_rsa_key.pub

使用以下命令可以确定远程服务器的SSH主机密钥:

root@BLSOL02:~# ssh-keygen -y -f /etc/ssh/ssh_host_dsa_key
ssh-dss 
AAAAB3NzaC1kc3MAAACBAJ2G5jV/4MHg9dG4DNb13Wrh94kbN5yUDQeW5SOP0JCzCQVpS2BnsV53L6CUQUPiNilXC 
qiLVMGaJmm+GSNL4Z82zAvNekTihXa1XabdAN7hBWccaxzH7ppmNbexiZVE/63aKIN+QnsjZ+cFbrqgDN9/ 
10O8DKVM7AJQbyaPDbOrAAAAFQCmFbD9ei01XVMKkOzvqOpp4SwqXQAAAIBNRewVPbCM/p2GZ4PlepXnY2Etbe 
UZ8WFe15gEfrTwk9lDVh1M2RBs5NRqzHe3JNNddln116fhr++tFK2/xOtG9bNbWfIUEO++gULfYDqn1Ir17L7MZ3gK1K
eELyJqtbkZKs2Ne/SA0oaZeJC0CMbi8Vs6ESkdMoSq34xbceDeugAAAIBc4ZWy840UAb7EURncb9KJg9wLFXfYpy7 
XubGGXhgfsw/z4Uect++kP8QpSYY3QynCzJ4ix3FpOyMKx4VShXKxQcYEMCNx5mnNOiLk/YmEfyeZI/ 
pNR7WIixvQQIj0JObjQRzdz2T+K3Y83S8f522N76dNVBgJmCbW0SalhwqoIw==
root@BLSOL02:~#
root@BLSOL02:~# ssh-keygen -y -f /etc/ssh/ssh_host_rsa_key
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAs/WovKxUpZw8T03HoH4dOlYGLzQ9bbfqayRd8Me33odUzKc8loUhOAdc
k7ySzaU3fd0Y+OYt1V/CN7wKo2qKowknf2K9JDsPyztSlSZi5FcT2WU6uDlb0FnEg+VAad83ETfDQQ+Ei2s5tV24n+ 
QKAJd7qiAImITTfC55D/ftxpdKZL+m4Meupva6rTiagsLc7fiR4w6FYtuNI3oqaxElDuhJ3675XoTTF3FzhUj0spj 
4ZLZ6nkN3mYTVyAfrrjzeHDG6N59B6O46C2zW9hCW3e0ZQ3g1sQlDaE/hScErd4JoLR8F2VnWlrj0MQx+4328/
p5C668LdPzULEuNEzXNPQ==

在本地客户端计算机上,可以使用以下命令检查SSH主机密钥,并与 ssh-keygen -y 选项的结果进行比较:

oracle@BLSOL01:~$ tail -1 $HOME/.ssh/known_hosts
blsol02,192.168.2.42 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAs/WovKxUpZw8T03HoH4dOlYGLzQ9bbfqay 
Rd8Me33odUzKc8loUhOAdck7ySzaU3fd0Y+OYt1V/CN7wKo2qKowknf2K9JDsPyztSlSZi5FcT2WU6uDlb0FnEg+ 
VAad83ETfDQQ+Ei2s5tV24n+QKAJd7qiAImITTfC55D/ftxpdKZL+m4Meupva6rTiagsLc7fiR4w6FYtuNI3oqaxElD 
uhJ3675XoTTF3FzhUj0spj4ZLZ6nkN3mYTVyAfrrjzeHDG6N59B6O46C2zW9hCW3e0ZQ3g1sQlDaE/ 
hScErd4JoLR8F2VnWlrj0MQx+4328/p5C668LdPzULEuNEzXNPQ==
6. 总结

在优化Linux以适配Oracle数据库和保障网络安全方面,我们涵盖了多个重要方面:
- 磁盘与服务优化 :通过启用nscd服务,提高了系统对网络故障的容忍度,减少了服务请求的延迟;正确对齐磁盘分区,避免了因分区未对齐导致的数据库性能问题。
- 网络安全保障 :设置SSH并生成主机密钥,确保了与远程服务器的安全连接,防止了中间人攻击和数据泄露。

整个流程可以用以下mermaid流程图表示:

graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
    classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px

    A([开始]):::startend --> B{是否需要优化数据库环境}:::decision
    B -- 是 --> C(启用nscd服务):::process
    C --> D(正确对齐磁盘分区):::process
    D --> E{是否需要远程安全连接}:::decision
    B -- 否 --> E
    E -- 是 --> F(设置SSH):::process
    F --> G(生成主机密钥):::process
    E -- 否 --> H([结束]):::startend
    G --> H

通过遵循这些步骤和方法,可以提高Oracle数据库在Linux系统上的性能和稳定性,同时保障网络通信的安全性。在实际操作中,需要根据具体的系统环境和需求进行适当调整。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值