优化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命令
:使用
# 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系统上的性能和稳定性,同时保障网络通信的安全性。在实际操作中,需要根据具体的系统环境和需求进行适当调整。
超级会员免费看
2万+

被折叠的 条评论
为什么被折叠?



