XXX农村商业银行 RedHat Linux操作系统安装配置规范

2018年7月

目录

1 文档说明 6

1.1 文档简介 6

1.2 适用对象 6

1.3 生效范围 6

2 系统安装 7

2.1 版本选择 7

2.2 安装 7

3 系统配置 11

3.1 服务的配置 11

3.2 命令时间戳记录 12

3.3 ulimit设置 12

3.4 文件系统挂载选择设置 13

3.5 系统敏感文件权限设置 14

3.6 日志审计策略配置 14

3.7 kdump配置 17

3.8 系统内核参数配置 17

3.9 crontab配置 18

4 安全配置 20

4.1 物理安全设置 20

4.2 口令策略设置 20

4.3 UID 0用户设置 21

4.4 系统登录安全设置 22

4.5 系统全局PROFILE安全设置 22

4.6 删除rhost相关高风险文件 23

4.7 SSHD配置 23

5 网络配置 25

5.1 主机名命名规范 25

5.2 网卡配置 26

5.3 系统网络参数设置规范 28

6 用户管理 30

7 存储管理 32

7.1 本地磁盘管理 32

7.2 外置卷组规范 33

7.3 文件系统说明 34

7.4 多路径软件配置规范 34

7.5 NFS挂载选项规范 36

8 补丁安装规范 38

9 虚拟机模板配置 39

9.1 虚拟机模板版本更新控制 39

9.2 配置虚拟机模板 39

10 FTP服务配置 41

10.1 VSFTPD服务安装 41

10.2 VSFTPD配置 41

10.2.1 VSFTPD数据目录 41

10.2.2 VSFTPD用户配置 41

10.2.3 VSFTPD服务配置 42

10.3 VSFTPD服务管理 46

10.3.1 启动服务 46

10.3.2 查看服务状态 46

10.3.3 设置VSFTPD开机启动 46

11 SFTP服务配置 48

11.1 SSHD服务安装 48

11.2 SFTP用户配置 48

11.3 SFTP数据目录 49

11.4 SFTP服务配置 50

11.5 SFTP日志配置 51

11.6 SFTP用户黑白名单配置 54

11.7 SFTP主机中的用户黑白名单配置 55

11.8 SFTP主机黑白名单配置 56

11.9 SSHD服务管理 57

11.9.1 启动服务 57

11.9.2 查看服务状态 58

11.9.3 设置SSHD开机启动 58

11.9.4 关闭SFTP服务 58

12 LVM卷配置管理 59

12.1 命令描述 59

12.2 配置LVM 59

12.2.1 创建分区 60

12.2.2 创建PV 61

12.2.3 创建VG 61

12.2.4 扩展VG 61

12.2.5 创建LV 61

12.2.6 扩展LV 62

12.2.7 创建文件系统 62

12.2.8 扩展文件系统 62

文档说明

文档简介

本规范为RedHat Linux操作系统的安装配置规范。

适用对象

本文档适用于全行Linux服务器系统管理员。

生效范围

自本版规范正式下发之日起,新安装的RedHat Linux服务器必须遵照配置执行。

除明确注明“新安装操作系统”的配置项外,已安装的Linux服务器,应按照本版规范进行配置调整。

配置项中,包含“必须”的,必须遵照执行;包含“应/不应”的,除特殊原因外需遵照执行;包含“建议”的,可根据实际情况执行,不做强制要求。

由于特殊原因而无法遵照执行的,应该及时报备。

“红色”标记为参考建议值。

系统安装

版本选择

根据应用的要求,并结合硬件类型,选择适当的操作系统版本。

至本规范最后更新时,新安装操作系统允许使用的版本如下:

  1. RedHat Enterprise Linux Server 6.7

  2. RedHat Enterprise Linux Server 7.5

安装

本章节主要描述安装过程中的各项参数设置,该要求同时适用于手工安装和kickstart自动安装。

引导系统提示: 选择“Installation”,正常安装系统

语言选择: 选择 EngLish

键盘布局: 选择U.S. English

设置系统主机名: 请参考章节6.1中的“主机命名规范”进行系统主机名的设置

时区选择: 统一选择“Asia/Shanghai”,系统时钟使用CST时间

root账户密码: 密码复杂性配置要求,请参考章节5.2中的“口令策略设置”

分区划分: 请参考章节8.1中的“本地磁盘管理”

软件包选择: 操作系统安装的初始软件包,选择建议如下

软件包名称 软件包说明
base(组) 操作系统基础包
compat-libraries(组) 操作系统兼容性库包,提供对老版本软件的支持
hardware-monitoring(组) 硬件监控工具,提升系统定位能力
large-systems(组) 大型系统工具集包,提供cgroup等管理工具
legacy-unix(组) Unix兼容性包
performance(组) 性能定位和监控工具,及时了解系统瓶颈
ksh ksh,监控软件和传统unix工具依赖
ftp ftp客户端,环境维护管理员使用
telnet telnet客户端,环境维护管理员使用
lsscsi lsscsi命令列出有关Linux中SCSI设备的信息

备注:软件包安装建议采用上述的最小安装方式,gcc/make等开发编译工具如非特殊需要,不应在生产系统中安装。若因生产需要,需要安装额外组件,请按第9章“补丁安装规范”中说明,从规定的yum源服务器获取,不得通过其他途径安装。

设置网络: 请参考章节6.2中的“网卡配置规范”

时钟同步配置: 时钟同步建议采用如下规范:

  • VMware虚拟机中,须取消VMware Tools配置项中的“在虚拟机和ESXServer操作系统之间进行时间同步”;

  • 操作系统应开启时间同步服务,以进行时间同步,配置方法如下:

在RedHat Enterprise Linux Server 6上:

添加时钟同步服务器,在/etc/ntp.conf文件中增加如下配置:

server 11.8.8.137 iburst

server 11.8.8.138 iburst

server 11.8.8.139 iburst

启动ntp服务:

# service ntpd restart

添加ntp服务到系统启动进程:

# chkconfig ntpd on

在RedHat Enterprise Linux Server 7上:

添加时钟同步服务器,在/etc/chrony.conf文件中增加如下配置:

server 11.8.8.137 iburst

server 11.8.8.138 iburst

server 11.8.8.139 iburst

启动chronyd服务:

# systemctl start chronyd.service

添加chronyd服务到系统启动进程:

# systemctl enable chronyd.service

  • 时间同步最大阀值应设置为500秒,服务器与时间服务器的时间误差超过500秒时应停止同步,在RedHat Enterprise Linux Server 6上ntpd服务将自动退出,在RedHat Enterprise Linux Server 7上chronyd服务将忽略跳过,配置方法如下:

在RedHat Enterprise Linux Server 6上:

在配置文件/etc/ntp.conf首行添加如下内容:

tinker panic 500

在RedHat Enterprise Linux Server 7上:

在配置文件/etc/chrony.conf中添加如下内容:

maxchange 500 0 -1

  • 时钟同步模式须采用微调模式,并禁止时间服务在服务启动或者重启时自动同步时间,配置方法如下:

在RedHat Enterprise Linux Server 6上:

在配置文件/etc/sysconfig/ntpd中的OPTIONS中添加 -x 选项,删除 -g 选项:

OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid"

在RedHat Enterprise Linux Server 7上:

RHEL7上chrony默认已经开启微调模式,默认值是83333.333 ppm (onetwelfth),即每秒同步 1/12秒,在RHEL6上微调模式同步1秒需要2000秒的时间,即每秒同步0.5ms,需保证所有RHEL版本时间服务的微调模式一致,在RHEL7上需将微调模式的频率修改为500ppm,即1/2000秒,配置如下:

注释或者删除配置文件/etc/chrony.conf中的如下内容:

#makestep 10 3

在配置文件/etc/chrony.conf中添加如下内容:

maxslewrate 500

以上所有修改之后,需要重新启动ntpd或者chronyd服务器,操作如下:

在RedHat Enterprise Linux Server 6上:

# service ntpd restart

在RedHat Enterprise Linux Server 7上:

# systemctl restart chronyd.service

  • 服务器第一次与时间服务器进行时间同步需采用手动同步的方式,在同步之前需要检查与时间服务器的误差范围,若误差范围较大(超过预设500s),需要评估时间调整后对操作系统和业务的影响,检查方法如下:

# ntpdate -q NTP Server IP地址

手动同步方法如下:

# ntpdate NTP Server IP地址

注:手动同步时间时需要先停止时间服务,同步完成后才开启时间服务。

系统配置

服务的配置

为提高系统的稳定性,减少系统网络配置上的安全漏洞,如非特殊需要,建议关闭以下系统服务:

服务名称 服务描述
cups 打印服务
postfix 邮件服务
pcscd smart卡登录服务
smartd 磁盘监控服务,对于做过RAID的磁盘无效
alsasound 声卡服务
iscsitarget iscsi target服务(默认不安装)
smb 与windows互访问的文件服务(默认不安装)
acpid acpi高级电源管理服务
iptables ipv4防火墙服务
ip6tables ipv6防火墙服务
firewall 防火墙服务(RHEL7上才有的)
NetworkManager 网络管理器

上述网络服务可通过下列命令停止并关闭:

  • 在RedHat Enterprise Linux Server 6上:

# service <servicename> stop

# chkconfig <servicename> off

例如:

# service postfix stop

#chkconfig postfix off

  • 在RedHat Enterprise Linux Server 7上:

# systemctl stop <servicename>

# systemctl disable <servicename>

例如:

# systemctl stop postfix.service

# systemctl disable postfix.service

为了更方便的管理系统及应用程序服务,如非特殊需要,建议关闭系统的SELinux服务,操作步骤如下:

# getenforce #检查当前SELinux状态,若为Enforcing或Permissive则需修改

# sed -i 's/^\(SELINUX=\).*/\1disabled/g' /etc/selinux/config #修改配置文件

# reboot #重启系统,若当前场景不适合重启系统,可执行以下步骤

# setenforce 0 #临时关闭

命令时间戳记录

为安全审计需要,应在记录用户系统操作命令的同时记录命令的时间戳,在/etc/bashrc文件中增加如下行:

export HISTTIMEFORMAT="%F %T "

ulimit设置

不恰当的limit设置会导致系统或者应用程序运行出现错误,应对/etc/security/limits.conf配置文件中的参数进行设置,并将/etc/security/limits.d/90-nproc.conf配置文件中的以下行注释:

#* soft nproc 1024

配置文件/etc/security/limits.conf中主要参数的说明及配置值如下所示:

  • 应用程序core大小设置,为防止大量的core文件占用系统,建议应用程序core大小限制为100M以下,在配置文件中增加如下两行:

* soft core 102400

* hard core 102400

  • 对于需要打开调试搜集应用程序core 文件,可以根据应用内存使用情况设置合适大小或者无限制,例如jboss用户jb_test设置为unlimited:

jb_test soft core unlimited

jb_test hard core unlimited

  • 单个程序打开的最大文件句柄数,不应设置过小,建议设置为65535:

* soft nofile 65535

* hard nofile 65535

  • 对于需要较多的文件句柄数的应用,例如Web服务器,可以根据应用需要设置合适的值,但需要指定应用用户,例如:

jb_test soft nofile 65535

jb_test hard nofile 65535

  • 单个程序创建的最大线程数,一般建议设置为5000:

* soft nproc 5000

* hard nproc 5000

  • 对于需要较多线程数的应用,例如Web服务器,可以根据应用需要设置合适的值,但需要指定应用用户,例如:

jb_test soft nproc 65535

jb_test hard nproc 65535

  • 其他ulimit参数除非有特需要求,不应修改,例如: data/stack程序数据段和堆栈段大小,rss程序驻留在系统中占有内存最大值,memlock/locks内存锁大小和文件锁个数。

文件系统挂载选择设置

修改文件系统默认选项,提升文件系统稳定性和安全性。安装后应做如下修改:

  • 对/tmp和/var分区增加nodev,nosuid选项

  • 对/home分区增加nosuid选项

  • 针对ext3、ext4分区,增加errors=panic选项,避免文件系统亚健康

例如,针对/home分区的配置,可编辑/etc/fstab, 然后进行如下修改:

/dev/vg/lv_home /home ext4 defaults,nosuid,errors=panic 0 0

系统敏感文件权限设置

针对系统文件,配置最小可用的文件权限。部分修改如下:

# chmod 400 /etc/crontab

# chmod 400 /etc/securetty

# chmod 600 /boot/grub/grub.conf

# chmod 600 /boot/grub2/grub.cfg (仅针对RHEL7)

# chmod 600 /etc/inittab

# chmod 600 /etc/login.defs

# chmod 644 /etc/hosts.allow

# chmod 644 /etc/hosts.deny

# chmod 644 /etc/profile

# chmod 644 /etc/bashrc

# chmod 644 /etc/passwd

# chmod 600 /etc/shadow

# chmod 644 /etc/group

# chmod 644 /etc/services

# chmod 600 /etc/xinetd.conf

# chattr +a /var/log/messages

日志审计策略配置

  • 系统缺省已经开启syslog/rsyslog服务,禁止关闭。系统syslog/rsyslog服务会将所有系统日志自动记录到/var/log/messages文件中,系统日志永久保留。

  • 开启audit审计功能,可以监控指定用户或目录,缺省会监控root的所有登录和操作。

  • 添加规则到 /etc/audit/audit.rules(RHEL7为/etc/audit/rules.d/audit.rules)文件中,实现监控所有用户的登录行为,包含用户所有操作,以及shell脚本中的命令。。

-a exit,always -F arch=b64 -S execve -k exec

-a exit,always -F arch=b32 -S execve -k exec

添加后使用ausearch -k exec来列出用户操作的记录

  • 添加规则到 /etc/audit/audit.rules(RHEL7为/etc/audit/rules.d/audit.rules)文件中,实现对重点配置文件的监控(根据实际应用额外添加文件列表)

-w /etc/crontab -p wa -k crontab

-w /etc/hosts -p wa -k hosts

-w /etc/hosts.allow -p wa -k hosts-allow

-w /etc/hosts.deny -p wa -k hosts-deny

-w /etc/fstab -p wa -k fstab

-w /etc/passwd -p wa -k passwd

-w /etc/shadow -p wa -k shadow

-w /etc/group -p wa -k group

-w /etc/gshadow -p wa -k gshadow

-w /etc/ntp.conf -p wa -k ntp (RHEL7为-w /etc/chrony.conf -p wa -k ntp)

-w /etc/sysctl.conf -p wa -k sysctl

-w /etc/security/limits.conf -p wa -k limits

-w /boot/grub/grub.conf -p wa -k grub (RHEL7为-w /boot/grub2/grub.cfg -p wa -k grub)

-w /etc/ssh/sshd_config -p wa -k ssh

-w /etc/udev/rules.d/ -p wa -k udev

-w /etc/profile -p wa -k profile

-w /etc/kdump.conf -p wa -k kdump

-w /etc/lvm/lvm.conf -p wa -k lvm

-w /etc/login.defs -p wa -k login-defs

-w /etc/rsyslog.conf -p wa -k rsyslog

-w /etc/sysconfig/i18n -p wa -k i18n (RHEL7为-w /etc/locale.conf -p wa -k i18n)

-w /etc/sysconfig/network -p wa -k network

-w /etc/multipath.conf -p wa -k multipath

添加后使用ausearch -k <key>来列出对应文件的修改记录,如ausearch -k multipath。

  • 配置audit日志,audit日志文件自动保存在/var/log/audit/目录中。

  • 每个log文件超过50M时进行轮换,保持最后4个log,可以通过/etc/audit/auditd.conf进行配置,修改如下选项:

num_logs = 4 #个数

max_log_file = 50 # 大小(MB)

  • 默认情况下,审计日志为每20条flush一次,为了防止由于大量后台脚本运行产生的审计日志在频繁flush到磁盘,导致磁盘使用率过高(特别是没有cache直接落盘的RAID卡),所以需要修改flush模式为NONE。可以通过编辑audit配置文件/etc/audit/auditd.conf进行配置,修改如下选项:

flush = NONE

  • 启动audit审计服务

在RedHat Enterprise Linux Server 6上:

# service auditd start

# chkconfig auditd on

在RedHat Enterprise Linux Server 7上:

# systemctl start auditd.service

# systemctl enable auditd.service

kdump配置

系统应开启kdump服务,以便在服务器系统崩溃时能够加载捕获内核,将系统内核崩溃前的内存镜像保存并进行转储,以定位内核崩溃的原因并改进。

默认kdump保存路径为/var/crash,如非特殊不可修改。

开启kdump服务的命令如下:

在RedHat Enterprise Linux Server 6上:

# service kdump start

# chkconfig kdump on

在RedHat Enterprise Linux Server 7上:

# systemctl start kdump.service

# systemctl enable kdump.service

配置完kdump服务后,需要使用以下的命令来触发kernel panic检测kdump服务是否配置正确:

# echo c > /proc/sysrq-trigger # 该命令会导致系统crash,切莫在生产环境使用!!

若kdump提示out-of-memory错误,可根据情况增大crashkernel(默认为auto)的值。

系统内核参数配置

编号 默认值(如非特殊需要,不应修改) 说明
1 vm.min_free_kbytes = 16384 最小内存水平线,free内存低于此值,系统会强制回收内存。建议最大设置不要超过:64000 KB。应使用默认值。 最小值:128K, 最大值:65536K
2 vm.vfs_cache_pressure = 100 vfs层cache保留倾向,> 100表示系统尝试多回收vfs cache,< 100表示系统尽量多保留vfs cache。
3 vm.dirty_ratio = 40 Page cache达到40% total memory(含swap)时,系统尝试将cache回写到磁盘,回收内存。
4 vm.page-cluster = 3 每次写入swap的最小页面数, 默认是2的3次方=8个页面。
5 (需要根据内存大小使用计算公式来计算,例如8G内存:) fs.file-max = 838860 kernel允许的最大文件句柄数。系统启动时根据内存自动调节,打开一个文件大概需要1k,总数不应超过系统内存的10%:计算公式为: Max(N, NR_FILE) N=(mempages * 4)/10 NR_FILE=4096 例如内存为8G的设置为(8*1024*1024/4)*4/10=838860
6 kernel.shmmax 共享内存的最大值,系统启动时根据内存自动调节,如非特殊需要,不应修改。此值最大设置为物理内存的90%。
7 kernel.shmmni = 4096 共享内存的最小值,系统默认值为4096,如非特殊需要,不应修改。
8 kernel.core_uses_pid = 0(默认为1) kernel.core_pattern = corefile/core-%e 应用程序core文件的命名设置,为防止应用程序生成大量core文件占用系统空间,应用程序core文件应设置为仅生成一个。其中core_pattern的路径可修改为其他路径。默认路径为应用用户家目录,且没有完全开启,如需完全开启,只需在应用用户家目录下创建corefile目录即可(但需注意home目录空间比应用程序所用内存要大)。
9 kernel.sysrq = 1 系统hung住时,可以使用Alt+Sysrq+c来收集vmcore

注: 以上设置选项在/etc/sysctl.conf中修改,执行: sysctl -p 生效。

crontab配置

默认cron任务的输出会以邮件的方式发送给管理员,由于系统默认已经关闭邮件服务,所以邮件会发送失败,最后会被扔在/var/spool/postfix/maildrop目录下,最后的结果是导致/var目录使用率逐渐增大。

正规的crontab写法需要将cron作业的输出重定向到指定的输出文件中,为了防止cron作业写法不正规导致不必要的问题,我们可以修改crontab配置文件,关闭邮件发送,编辑文件/etc/crontab,修改如下选项:

MAILTO=""

另外用户在使用crontab -e命令创建自定义cron job时,需要在第一行添加MAILTO="",示例如下:

MAILTO=""

* * * * * /bin/sh ********.sh &> /dev/null

安全配置

物理安全设置

  • 应禁止使用usb存储设备,防止物理usb设备引入木马文件。

# echo "install usb-storage /bin/true" >> /etc/modprobe.d/usb-storage.conf

  • 必须禁止Control+Alt+Delete直接重启服务器:

在RedHat Enterprise Linux Server 6上:

# sed -i 's/\^start on control-alt-delete/#start on control-alt-delete/g' /etc/init/control-alt-delete.conf

在RedHat Enterprise Linux Server 7上:

# systemctl mask ctrl-alt-del.target

口令策略设置

口令复杂度规定

密码复杂性配置应满足如下要求

  • 密码长度至少为8位,且含有如下字符类型中的四种:

  • 英语大写字母 A, B, C, … Z

  • 英语小写字母 a, b, c, … z

  • 西方阿拉伯数字 0, 1, 2, … 9

  • 非字母数字字符,如标点符号,\@, #, \$, %, &, *等

  • 密码历史为10次,是指修改口令时禁止使用最近10次已使用过的密码口令(己使用过的口令会被保存在 /etc/security/opasswd 下面)。

在RedHat Enterprise Linux Server 6上:

# sed -i '/^password[[:space:]]\{1,\}requisite[[:space:]]\{1,\}pam_cracklib.so/a\password required pam_pwhistory.so use_authtok remember=10 enforce_for_root' /etc/pam.d/system-auth-ac

在RedHat Enterprise Linux Server 7上:

# sed -i '/^password[[:space:]]\{1,\}requisite[[:space:]]\{1,\}pam_pwquality.so/a\password required pam_pwhistory.so use_authtok remember=10 enforce_for_root' /etc/pam.d/system-auth-ac

口令有效期规定

root用户应满足如下用户口令策略,对于其他用户,如无特殊要求,建议采用。修改/etc/login.defs文件,修改如下参数的值:

  • PASS_MAX_DAYS 90 (最长期限90天)

  • PASS_MIN_DAYS 1 (最短期限1天)

  • PASS_MIN_LEN 8 (最少8个字符)

  • PASS_WARN_AGE 7 (提前7天提示密码修改)

设置:

在RedHat Enterprise Linux Server 6上:

# sed -i "s/^\(password[[:space:]]*requisite[[:space:]]*pam_cracklib.so\).*/\1 try_first_pass retry=6 minlen=8 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1 enforce_for_root/g" /etc/pam.d/system-auth-ac

在RedHat Enterprise Linux Server 7上:

# sed -i "s/^\(password[[:space:]]*requisite[[:space:]]*pam_pwquality.so\).*/\1 try_first_pass local_users_only retry=6 minlen=8 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1 enforce_for_root authtok_type=/g" /etc/pam.d/system-auth-ac

UID 0用户设置

系统应禁止除root用户之外UID为0的用户。

系统中每一个用户都被分配一个用户ID号,ID 号为 0 是为 root 保留的,UID 号 1-499 是为系统其它预定义的帐号保留的,UID为0拥有系统的最高特权,应保证只有root用户的UID为0。

检查方法:

# awk -F: '(\$3 == 0) { print \$1 }' /etc/passwd

返回值包括“root”以外的条目,则应修正。

系统登录安全设置

针对系统登录进行加固,提升系统安全性。具体修改如下:

  • 避免记录不存在用户的登录信息,避免用户误输入导致密码泄露

# echo "LOG_UNKFAIL_ENAB yes" >> /etc/login.defs

  • 配置用户密码尝试次数为5次,超过5次后用户锁定,避免暴力破解

# echo "LOGIN_RETRIES 5" >> /etc/login.defs

  • 记录用户上次登录时间,用户登录时给予提示

# echo "LASTLOG_ENAB yes" >> /etc/login.defs

系统全局PROFILE安全设置

  • 配置系统超时自动退出,建议配置成300秒

# echo "export TMOUT=300" >> /etc/profile

  • 配置命令历史记录条数为5000

# echo "export HISTFILESIZE=5000 " >> /etc/profile

  • 连续5次输错密码禁用一段时间,建议配置成300秒

在RedHat Enterprise Linux Server 6和7上:

# sed -i '/auth[[:space:]]*required[[:space:]]*pam_env.so/a\auth required pam_tally2.so onerr=fail deny=5 unlock_time=300 even_deny_root root_unlock_time=300' /etc/pam.d/system-auth-ac

# sed -i '/account[[:space:]]*required[[:space:]]*pam_unix.so/i\account required pam_tally2.so' /etc/pam.d/system-auth-ac

# sed -i '/auth[[:space:]]*required[[:space:]]*pam_env.so/a\auth required pam_tally2.so onerr=fail deny=5 unlock_time=300 even_deny_root root_unlock_time=300' /etc/pam.d/password-auth-ac

# sed -i '/account[[:space:]]*required[[:space:]]*pam_unix.so/i\account required pam_tally2.so' /etc/pam.d/password-auth-ac

  • 用户默认的umask值为022,不应修改

删除rhost相关高风险文件

rcp,rsh,rlogin等远程拷贝和登录命令会使用rshost相关文件,这些命令存在较高风险,应禁止使用,并在实际使用中用scp, ssh等命令替代。其相关配置文件应该删除。

删除命令如下:

# rm /root/.rhosts /root/.shosts /etc/hosts.equiv /etc/shosts.equiv /root/.rhosts /root/.rhost /root/.netr

SSHD配置

为保证sshd服务的安全性,应在/etc/ssh/sshd_config配置文件中放开如下配置的注释并做相应的修改:

  • 强制使用22号端口

Port 22

  • 记录所有信息,包括info信息

LogLevel INFO

  • 最大重试次数从5次修改为3次

MaxAuthTries 3

  • 允许密码认证

PasswordAuthentication yes

  • 在使用RhostsRSAAuthentication 或者 HostbasedAuthentication两种认证方式时,应禁止使用 .rhosts 和 .shosts两个文件

RhostsRSAAuthentication no

  • 当使用密码认证时,不允许设置空密码

PermitEmptyPasswords no

  • 在用户登录前,是否检查用户文件和目录的属主和权限

StrictModes yes

  • 在使用RhostsRSAAuthentication 或者 HostbasedAuthentication两种认证方式时,忽略 \~/.ssh/known_hosts文件

IgnoreUserKnownHosts yes

  • 使用版本为2的ssh协议

Protocol 2

  • 指定密码类型为3des-cbc

Ciphers 3des-cbc

  • 指定MAC(消息认证代码)算法,用于数据完整性保护

MACs hmac-sha1,hmac-md5

网络配置

主机名命名规范

设置主机名时应遵循下述规则:

  • 主机名只能包含小写英文字母、数字和连字符(-),最长不得超过15个半角字符,最短建议不少于5个半角字符;

  • 对于一般服务器,总行信息技术部运行中心服务器主机名构成为:所属系统{2-4}功能{2-6}[-(连字符)]序号{2-4}[v]物理位置{2}。

 “所属系统”为该服务器所属系统的英文名称缩写,长度为2-4位的英文字母或数字,缩写应登记备案,例如,tb(电话银行)、nb(网上银行)、dw(数据仓库)、nsys(新系统)等等;

 “功能”为该服务器的功能描述,长度为2-6为的英文字母或数字,例如,app(应用服务器)、web(web服务器)、db(数据库服务器)等等;

 在总长度不超过15个半角字符的前提下,可采用连字符分隔增加易读性;

 “序号”为相同系统和功能的计算机标识,长度为2-4位的字母或数字,例如,1N、F2等等;

 在满足总长度不超过15个半角字符的前提下,可用字母v标识虚拟机;

 “物理位置”为该服务器所在地址位置标识,长度为2位的英文字母或数字,如sz、sh、nj分别标识深圳、上海、南京。

 对于分行服务器,则须在上述命名规范左边增加分行字母代码(2位)

/etc/hosts文件编写规范

在原文件的基础上新增主机条目(切记不可修改localhost条目),格式为:

<IP> <全主机名> <别名>

例如:

# echo " x.x.x.x test.example.com test" >> /etc/hosts

网卡配置

物理机网络设置 物理机网卡必须采用bond配置(建议主备模式),其中主备模式配置示例如下:

  • /etc/sysconfig/network-scripts/ifcfg-bond0文件配置:

DEVICE=bond0

TYPE=Ethernet

ONBOOT=yes

BOOTPROTO=static

NM_CONTROLLED=no

DNS1=a.a.a.a

DNS2=b.b.b.b

IPADDR=x.x.x.x

NETMASK=y.y.y.y

GATEWAY=z.z.z.z

BONDING_OPTS=" mode=1 miimon=100 " (primary=ethX可选,根据需要添加,但需要跟updelay=120000一起使用)

  • /etc/sysconfig/network-scripts/ifcfg-eth0文件配置:

DEVICE=eth0

ONBOOT=yes

BOOTPROTO=none

TYPE=Ethernet

NM_CONTROLLED=no

MASTER=bond0

SLAVE=yes

  • 编辑/etc/modprobe.d/bonding.conf,增加下面一行:

alias bond0 bonding

虚拟机网络配置 无特殊要求,配置静态IP即可,配置示例如下:

  • /etc/sysconfig/network-scripts/ifcfg-eth0文件配置:

DEVICE=eth0

ONBOOT=yes

BOOTPROTO=static

TYPE=Ethernet

NM_CONTROLLED=no

DNS1=a.a.a.a

DNS2=b.b.b.b

IPADDR=x.x.x.x

NETMASK=y.y.y.y

GATEWAY=z.z.z.z

注:上述配置示例中,DNS、IP地址、子网掩码和网关均用a.a.a.a和b.b.b.b、x.x.x.x、y.y.y.y和z.z.z.z表示,实际配置中应修改为真实的配置值。

网卡路由配置 若操作系统同时有业务流量和其他流量如备份流量等,应增加相应网卡并配置路由,以将其他流量同业务流量分离。新增网卡的配置方法见上述物理机或虚拟机的网络配置,但网关不应设置。路由配置的方法如下所示:

在RedHat Enterprise Linux Server 6上:

  • 打开/etc/sysconfig/static-routes文件,若该文件不存在则手工新建一个;

  • 在static-routes文件中增加所需要配置的路由,配置示例如下所示:

any net 10.0.18.0/24 gw 10.0.18.253

  • 重启网络服务,然后执行route –n|grep UG,查看是否新增路由的记录。

在RedHat Enterprise Linux Server 7上:

  • 执行以下命令

# nmcli connection modify team0 +ipv4.routes "10.0.18.0/24 10.0.18.253"

注: 上述路由表示本机到10.0.18网段的路由都经由10.0.18.253这个网关发送。

系统网络参数设置规范

编号 设置值 说明
1 net.ipv4.conf.all.arp_ignore = 0 net.ipv4.conf.default.arp_ignore = 0 不允许ignore arp(只有LVS时才需要此选项)
2 net.ipv4.conf.all.arp_filter = 0 net.ipv4.conf.default.arp_filter = 0 不允许ignore arp filter(只有LVS时才需要此选项)
3 net.ipv4.conf.all.rp_filter = 0 不开启rp_filter(防止ip欺骗)
4 net.ipv4.conf.all.log_martians =0 net.ipv4.conf.default.log_martians = 0 不记录探测包,源路由包,重定向包
5 net.ipv4.conf.all.promote_secondaries = 1 禁止删除primary ip,当secondary ip地址与primary ip地址属于同一个网段时,删除primary ip地址时也会删除secondary ip地址
6 net.ipv4.ip_no_pmtu_disc = 1 禁用ip path mtu discover
7 net.ipv4.conf.all.forwarding = 0 net.ipv4.conf.default.forwarding = 0 禁用ip转发
8 net.ipv4.icmp_echo_ignore_broadcasts = 1 禁止响应目的地为广播地址类型为echo的icmp包。
9 net.ipv4.conf.all.accept_source_route = 0 net.ipv4.conf.default.accept_source_route = 0 禁用源地址路由
10 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 拒绝路由重定向包
11 net.ipv4.conf.all.secure_redirects = 0 也不允许网关发送的路由重定向包
12 net.ipv4.tcp_timestamps = 1 开启tcp时间戳选项
13 net.ipv4.icmp_ignore_bogus_error_responses = 1 某些路由器忽略RFC1122规定的包,发送假的错误消息给源主机,导致源主机记录大量错误信息到日志中
14 net.ipv4.conf.all.proxy_arp = 0 net.ipv4.conf.default.proxy_arp = 0 关闭arp代理
15 net.core.somaxconn = 1024 net.ipv4.tcp_max_syn_backlog = 8192 最大的syn包队列设置,加大tcp会话等待数 对于需要支撑高并发的业务服务器,可以根据压力测试情况,将该值增大。
16 net.ipv4.tcp_syncookies = 1 防止客户端使用syn包打开半链接进行拒绝攻击,
17 net.ipv4.tcp_fin_timeout = 60 本端关闭的链接从FIN_WAIT_2到TIME_WAIT状态设置为60
18 net.ipv4.ip_forward = 0 禁止IP转发
19 net.ipv4.conf.all.send_redirects = 0 禁止发送重定向报文
20 net.ipv4.tcp_keepalive_time = 150 net.ipv4.tcp_keepalive_probes = 5 net.ipv4.tcp_keepalive_intvl = 6 TCP keepalive设置

注: 以上设置选项在/etc/sysctl.conf中修改,执行: sysctl -p 生效。

用户管理

  • 根据应用的要求,增加应用账户,比如下面示例:
应用平台用户 用户ID 组名 组ID 备注 家目录 shell
tmpusr 1000 tmpusr 1000 /home/tmpusr /bin/bash
ansible 9999 wheel 10 /home/ansible /bin/bash
  • 系统默认的用户账户不建议进行删除。系统默认的用户账户被系统用于进行对各种系统自有进程的控制操作中,误删除将有可能导致一些受影响的系统进程出现启动,运行或关闭过程中的异常。系统默认的用户账户已经经过系统建议的安全设置配置,在无人为修改的前提下能够保证系统主机的安全访问控制。

  • 除root用户外,系统其他的默认用户的登录shell均为非交互式登录shell,不应修改系统默认账户的登录shell的属性。

  • 在系统集成和应用规划时,对账户的管理必须达到如下要求:

    1. 系统不存在无用的账号;

    2. 所有系统的账号均可更改;

    3. 一般情况不允许将各类账号/口令的明文存储在文件中,除非受到技术限制(如只能通过文件存放明文);

  • 某些账号仅供业务人员FTP使用,对于此类账号,必须进行配置以限制此类账号:该类账号仅能通过FTP连接至主机,但不能远程登陆(telnet/ssh)至相关主机;并且该类账号FTP至主机后,仅能访问固定目录;

  • 必须对密码限制,包括时效限制(口令每90天修改一次)、复杂程度限制(长度最少8位)、非空限制、重复使用次数限制(不得使用5次之内重复的密码)。详见第5.2节。

  1. 如非特殊需要,应用管理员需要以应用账号登陆,需要使用特权指令时,使用sudo权限。使用以下方法来配置sudo权限:

# visudo

例如:赋予oracle用户使用fdisk命令的权限,在visudo命令打开的配置文件最后添加:

#创建alias PRIVUSERS 然后添加 sudo 用户oracle,这样可以使多个用户有相同的权限

User_Alias PRIVUSERS = oracle

#创建 alias PRIVSERVICES 这样便于以后可以添加多个命令

Cmnd_Alias PRIVSERVICES = /sbin/fdisk

#指定之前创建的alias给指定的用户/用户组

PRIVUSERS ALL=(ALL) PRIVSERVICES

sudo使用方法:

以oracle用户在运行命令前加sudo,然后输入oracle用户的密码(非root密码)

oracle\$ sudo /sbin/fdisk -l

存储管理

本地磁盘管理

磁盘配置要求:

在物理服务器上安装操作系统时,操作系统所在磁盘必须配置为RAID1的硬件磁盘阵列

物理机分区划分规范:

除/boot分区不能采用LVM外,其他所有分区都应采用LVM管理磁盘,另外应用程序如果使用LVM来管理,需要创建单独的VG,文件系统可按照下表来设置逻辑卷名称及相应空间(这里列出的为最低空间要求):

Mount Point LV命名 最低配置(GB) 备注
/boot 1G 必须是分区
/ /dev/mapper/VolGroup-lv_root 50G
swap /dev/mapper/VolGroup-lv_swap 16G
/tmp /dev/mapper/VolGroup-lv_tmp 20G
/var /dev/mapper/VolGroup-lv_var 10G
/home /dev/mapper/VolGroup-lv_home 10G
/opt /dev/mapper/VolGroup-lv_opt 10G

注: 上述分区方案只用了RAID1操作系统硬盘,对于数据磁盘,需要根据应用情况进行规划。

虚拟机分区划分规范:

除/boot分区不能采用LVM外,其他所有分区都应采用LVM管理磁盘,文件系统可按照下表来设置逻辑卷名称及相应空间(这里列出的为最低空间要求):

Mount Point LV命名 最低配置(GB) 备注
/boot 1G 必须是分区
/ /dev/mapper/VolGroup-lv_root 50G
swap /dev/mapper/VolGroup-lv_swap 根据内存计算
/tmp /dev/mapper/VolGroup-lv_tmp 20G
/var /dev/mapper/VolGroup-lv_var 10G
/home /dev/mapper/VolGroup-lv_home 10G
/opt /dev/mapper/VolGroup-lv_opt 10G

swap的大小按照如下规则:

  • 内存小于等于2G,swap为内存的3倍

  • 内存大于2G,小于等于8G,swap为内存的2倍

  • 内存大于8G,swap大小为16G(MAX)

  • 如果有应用对于swap又特殊要求,按照应用的要求划分。

外置卷组规范

卷组(VG)命名规范

外置卷组即指操作系统中本地硬盘以外的共享存储空间。外置卷组必须采用vg+“_主机名”+“_用途简称”的命名方法,主机名的第一个字母应大写。用途简称指具体的数据库类型或应用类型,根卷保持“vg00”命名不变。

按照上述规范,若主机名称为abcdef,则该主机根卷名称为vg00,该主机上为ftc配置的共享卷名称为'vg_abcdef_ftc'。

逻辑卷(LV)命名规范

用于操作系统的逻辑卷命名采用入下表所示方案(Weblogic和Tuxedo可参照此命名方法,需注意挂载点的第一个字母应大写):

逻辑卷用途 命名方法 举例
用于文件系统 lv + 挂载点名称 lv_mountname
用于保留交换区的文件系统 lvsw + 挂载点名称 lvsw_mountname

注意:划分的逻辑卷必须有特定的用途,严禁系统中存在未使用的逻辑卷。

文件系统说明

默认文件系统格式建议为ext4,对于特殊情况可以选择其他文件系统(比如磁盘大小超过16T,可以使用xfs文件系统)。

多路径软件配置规范

在物理系统使用共享存储的情形下,应该配置多路径。

  • 建议优先使用存储厂商提供的多路径软件,安装配置按照存储厂商提供的安装说明进行配置即可。

  • 若存储厂商不提供多路径软件,则应安装系统自带的多路径软件,开启方法如下:

在RedHat Enterprise Linux Server 6上:

# service multipathd start

# chkconfig multipathd on

在RedHat Enterprise Linux Server7上:

# systemctl start multipathd.service

# systemctl enable multipathd.service

  • /etc/multipath.conf为多路径配置文件,建议优先使用存储厂商提供的多路径配置文件,如果存储厂商没有提供,那么可以由操作系统命令”/sbin/mpathconf –enable”探测存储信息后自动生成。除非特殊需求,不应修改。

  • 对于polling_interval,我们使用如下计算公式:

polling_interval = 10  (default when Lun is less than a NUMBER[50])
polling_interval = 60  (Number[50] \~ 3*NUMBER[50])
polling_interval = 120 (10*Number[50])
polling_interval = 300 (30*Number[50])

  • 配置范例说明如下:

defaults { (全局配置设定)

udev_dir /dev

polling_interval 10 (路径探测轮询间隔时间)

path_grouping_policy multibus (路径组合策略方式)

getuid_callout “/lib/udev/scsi_id –whitelisted –device=/dev/%n”

(唯一路径检测方式)

prio alua (路径优先级检测方式)

path_checker readsector0 (路径状态检查方式)

rr_min_io 100 (设备状态检查最小读取IO数)

max_fds 8192 (multipathd程序最大打开文件句柄数)

rr_weight priorites (路径优先级权重计算方式)

failback immediate (切换策略)

no_path_retry fail (路径检查失效后处理策略)

user_friendly_names yes (命名方式是否启用/dev/mapper/mpathN)

}

multipaths { (给特定的wwid设备设置其他策略)

multipath {

wwid xxx

alias YOUR_DEVICE_NAME

path_checker xxx

path_selector xxx

failback xxx

}

}

devices { (给特定vendor/product设备设置其他策略)

device {

vendor xxx

product xxx

path_checker xxx

path_selector xxx

failback xxx

}

}

  • 虚拟机无多路径支持,故无需作相关配置。

NFS挂载选项规范

  • hard 和soft选项

虽然 soft选项能很快检测到NFS不能访问,但是soft选项容易导致正在写的数据被损坏,所以对于以rw挂载的NFS,应该使用默认的hard选项。对于使用NFS作为心跳盘的OracleRAC环境,对于NFS的可用性需要快速判断,因为心跳盘不会涉及到数据损坏,所以需要配置为soft选项。

  • bg 选项

如果客户端再重启的时候遇到网络故障或者NFS Server端无法访问,可能会导致系统hang住,解决这个问题的方法是,使用bg选项将NFS的开机自动挂载放在后台进行,默认是fg前台进行挂载。

对于以rw挂载的NFS,开机自动挂载及挂载选项设置示例如下:

<NFS Server>:/vol /data nfs defaults,bg 0 0

对于使用NFS作为心跳盘的Oracle RAC环境,开机自动挂载及挂载选项设置示例如下:

<NFS Server>:/vol /votedisk nfs defaults,rw,bg,soft,nointr,rsize=32768,wsize=32768,tcp,noac,vers=3,timeo=600,actimeo=0 0 0

补丁安装规范

  1. 所有的Linux服务器应指向的Linux补丁服务器最新YUM源;

  2. 对于新部署的Linux服务器,推荐更新到最新的补丁版本,以保证系统的安全稳定运行;

  3. 对于已经稳定运行的环境,各种类型的补丁更新应达到以下要求:

  4. 对于致命级别的安全漏洞补丁,应立即更新;

  5. 对于bug修复类补丁,若涉及到的模块满足bug触发条件,应及时更新,其他情况则建议1个月内进行更新;

  6. 对于功能增强型补丁,建议每6个月更新一次,间隔时间不宜过长或过短;

  7. 若补丁是内核补丁,安装时应保留原内核内容,避免出现安装失败后无法进入系统的情况;若是其他补丁,则建议安装时替换原内容。

  8. 对于升级过内核的机器,要确保下一次启动将使用新内核启动,默认情况下,新安装的内核会排在第一位,且默认启动使用的内核为第一个内核,该设置在/boot/grub/grub.conf文件中(RHEL7使用grub2-set-default命令设置),如无特殊需求,不应修改。

  9. 若由于应用需求要立即安装相关补丁,建议首先搭建测试环境,在测试环境中进行更新测试,测试通过后再在生产环境更新;

  10. 目前yum源服务器地址均为10.8.251.100,所有的Linux服务器都应从该yum源服务器中下载安装软件及补丁程序。RedHat的yum源配置方法为,修改/etc/yum.repos.d/目录下的任意一个repo文件,如rhel-souce.repo,增加BaseOS、Custom和fix的yum仓库,参考配置如下:

[rhel7]

name=Red Hat Enterprise Linux 7 Update

baseurl=http://10.8.251.100/rhel-7-server-rpms

enabled=1

gpgcheck=0

注:

  • 第一行中的“[rhel7]”为新增yum源的名称,不应与其他yum源的名称相同

  • Linux服务器应检查到yum源80端口的连通性,若telnet不通,则提单请网络室开通

  • enabled值应配置为1,即本yum源生效

  • 修改完成后执行yum repolist检查该yum源状态,若有速率则表示正常

虚拟机模板配置

虚拟机模板版本更新控制

为了在以后能够更好的维护系统及虚拟机模板,需在虚拟机模板中配置版本控制:版本更新配置脚本、版本文件和版本历史记录文件:

  1. 版本更新配置脚本:vmware-update(放在/usr/bin目录下)

  2. 版本文件:/etc/VMware-template-version(由vmware-update脚本生成)

  3. 版本历史记录文件:/root/.vmware/VMware-template-update-record(由vmware-update脚本生成)

每次修改完模板之后使用vmware-update来更新模板版本号,当需要确定当前虚拟机的模板是什么时间创建的,可通过查看/etc/VMware-template-version文件来获取,当需要查看当前虚拟机模板之前的更新记录时,可通过查看/root/.vmware/VMware-template-update-record来获取。

配置虚拟机模板

在配置虚拟机的模板时,应按以下操作步骤进行配置之后再进行封装,否则使用模板部署的虚拟机之间会发生冲突:

  • 删除ssh host key

# rm -rf /etc/ssh/ssh_host_*

  • 在主机名配置文件中设定主机名为:localhost.localdomain

在RedHat Enterprise Linux Server 6上:

# sed -i 's/\(HOSTNAME=\).*/\1localhost.localdomain/g' /etc/sysconfig/network

在RedHat Enterprise Linux Server 7上:

# echo localhost.localdomain > /etc/hostname

  • 删除/etc/udev/rules.d/70-* 规则

# rm -rf /etc/udev/rules.d/70-*

  • 删除/etc/sysconfig/network-scripts/ifcfg-eth* 中的“HWADDR=”行

  • 删除/var/log中的所有日志文件,不包括目录。

  • 使用vmware-update脚本更新版本历史记录文件:/root/.vmware/VMware-template-update-record

  • 关闭虚拟机

注:若虚拟机模板又执行过重新开机动作,则须再次执行以上操作。

FTP服务配置

本章节主要描述行里在RedHat Linux下使用ftp服务的配置规范。

VSFTPD服务安装

在RedHat Linux上,FTP服务端使用的是vsftpd。可使用下面的方法安装,安装前需确认已经配置了yum源。

# yum -y install vsftpd

VSFTPD配置

VSFTPD数据目录

  • 为了保证数据的安全及传输效率,建议FTP的数据存放在独立的存储上面,与系统数据分离,存储的挂载点统一为/ftp,文件系统使用LV的形式,且必须是单独的VG,不能与系统VG公用。

  • 为了将不同的FTP用户的数据分离开来,FTP用户数据统一放在/ftp目录下以FTP用户名命名的目录下(/ftp/[username]),/ftp/[username]目录即为FTP用户的home目录,同时也是FTP用户的根目录。

  • 为了保证系统的安全性,需要启用FTP用户的chroot功能(默认未启用),不允许FTP用户跳出进入FTP用户根目录以外的目

VSFTPD用户配置

FTP服务器不建议开启匿名访问(默认开启,需要关闭),在搭建FTP之前需创建FTP用户,为方便统一管理,FTP用户要求如下:

  1. 创建FTP用户时,FTP用户的home目录统一放在/ftp目录下,FTP用户的home目录即为FTP用户上传及下载的数据目录。

  2. 限制操作系统登陆,为了保证操作系统安全,应限制FTP用户不能登录操作系统,在创建FTP用户时应指定该用户的Shell为/sbin/nologin,限制该用户只能登陆FTP。

  3. 必须对FTP用户的密码限制,包括时效限制(口令每90天修改一次)、复杂程度限制(长度最少8位)、非空限制、重复使用次数限制(不得使用6次之内重复的密码)。详见章节4.2 “口令策略设置”。

配置示例如下:

# useradd -s /sbin/nologin -d /ftp/ftpusr1 ftpusr1

# id ftpusr1

uid=2111(ftpusr1) gid=2111(ftpusr1) groups=2111(ftpusr1)

# passwd ftpusr1

Changing password for user ftpusr1.

New password: #输入密码

Retype new password: #确认密码

passwd: all authentication tokens updated successfully.

# useradd -s /sbin/nologin -d /ftp/ftpusr2 ftpusr2

# id ftpusr2

uid=2112(ftpusr2) gid=2112(ftpusr2) groups=2112(ftpusr2)

# passwd ftpusr2

Changing password for user ftpusr2.

New password: #输入密码

Retype new password: #确认密码

passwd: all authentication tokens updated successfully.

# ls -l /ftp

total 8

drwx------ 2 ftpusr1 ftpusr1 4096 Mar 16 09:35 ftpusr1

drwx------ 2 ftpusr2 ftpusr2 4096 Mar 16 09:35 ftpusr2

VSFTPD服务配置

VSFTPD的主配置文件为:/etc/vsftpd/vsftpd.conf,另外一些相关的文件有:/etc/vsftpd/chroot_list,/etc/vsftpd/user_list和/etc/vsftpd/ftpusers等。

  • VSFTPD的主配置文件的所有配置项均具有相同的语法格式:

[Parameter]=[Value] 即 [参数]=[值]

大部分参数都具有默认值,可以通过man vsftpd.conf查询获知。

主要配置如下:

  • 关闭匿名访问。修改主配置文件/etc/vsftpd/vsftpd.conf的以下行:

anonymous_enable=NO #默认为YES,修改为NO

  • 允许本地用户登录。检查主配置文件/etc/vsftpd/vsftpd.conf的以下行:

local_enable=YES #默认已经开启

  • 允许上传数据。检查主配置文件/etc/vsftpd/vsftpd.conf的以下行:

write_enable=YES #默认已经开启

  • 设置umask。检查主配置文件/etc/vsftpd/vsftpd.conf的以下行:

local_umask=022 #默认已经设置

  • 开启Chroot,禁止FTP用户进入用户家目录以外的目录。取消主配置文件/etc/vsftpd/vsftpd.conf以下三行的注释:

chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

注:

以上3个参数生效表示仅写在/etc/vsftpd/chroot_list的FTP用户可以跳出进入FTP用户根目录以外的目录,当/etc/vsftpd/chroot_list文件内容为空时,即表示所有FTP用户均不能跳出进入FTP用户根目录以外的目录。

如果chroot_local_user=YES被注释,则表示拒绝/etc/vsftpd/chroot_list中的FTP用户进入FTP用户根目录以外的目录,当/etc/vsftpd/chroot_list文件内容为空时,即表示所有FTP用户均可以跳出进入FTP用户根目录以外的目录,所以要禁止FTP用户跳出用户家目录,必须将以上三个参数全部开启,并保证/etc/vsftpd/chroot_list文件内容为空。

  • (仅适用于RHEL7版本操作系统)允许ftp用户做chroot后,对用户的根目录及其子目录可写操作。

allow_writeable_chroot=YES

  • 创建chroot_list文件并修改其权限,文件中不需要写任何内容:

# touch /etc/vsftpd/chroot_list

# chmod 600 /etc/vsftpd/chroot_list

  • 开启FTP用户访问控制(用户黑白名单)。

  • 检查主配置文件/etc/vsftpd/vsftpd.conf的以下行:

userlist_enable=YES #默认已经开启

  • 修改主配置文件/etc/vsftpd/vsftpd.conf,添加以下行:

userlist_deny=NO

  • 添加允许访问FTP的用户至/etc/vsftpd/user_list(根据实际情况而定):

# echo ftpusr1 >>/etc/vsftpd/user_list

# echo ftpusr2 >>/etc/vsftpd/user_list

  • 添加拒绝访问FTP的用户至/etc/vsftpd/ftpusers(根据实际情况而定,按照以上的配置,不添加默认也是拒绝的):

# echo ftpusr2 >>/etc/vsftpd/ftpusers

注:

当开启userlist_enable=YES和userlist_deny=NO时,/etc/vsftpd/user_list中的用户允许访问FTP,/etc/vsftpd/ftpusers中的用户拒绝访问FTP,若一个用户同时存在于/etc/vsftpd/user_list和/etc/vsftpd/ftpusers中,该用户拒绝访问FTP,若一个用户同时不存在/etc/vsftpd/user_list和/etc/vsftpd/ftpusers中,该用户拒绝访问FTP。当userlist_deny=YES时,/etc/vsftpd/user_list和/etc/vsftpd/ftpusers中的用户拒绝访问FTP,其他用户可以访问FTP。在以上的配置中,ftpusr1允许访问FTP,ftpusr2拒绝访问FTP。

  • 开启IP访问控制(IP黑白名单)。检查主配置文件/etc/vsftpd/vsftpd.conf的以下行:

tcp_wrappers=YES #默认已经设置

注:

当/etc/hosts.allow和/etc/hosts.deny为空时,表示所有IP都可以访问;当/etc/hosts.deny为空时,不论/etc/hosts.allow是否为空,同样表示所有IP可以访问;当一个目标IP同时存在于/etc/hosts.allow和/etc/hosts.deny中时,该IP可以访问。

配置示例如下:

在/etc/hosts.allow中添加允许访问FTP服务的IP:

vsftpd: 10.1.2.3,10.2.3.4 #多个IP用逗号隔开

在/etc/hosts.deny中添加拒绝所有:

vsftpd: ALL

以上配置表示只允许10.1.2.3和10.2.3.4访问FTP服务,其他网络地址全部拒绝。

  • 限制FTP用户根目录。修改主配置文件/etc/vsftpd/vsftpd.conf,添加以下行:

user_sub_token=\$USER

local_root=/ftp/\$USER

注:

以上配置可以防止在创建FTP用户时,未将FTP用户的home目录指向/ftp目录下,导致该FTP用户的根目录在其他地方,该FTP用户的数据上传与下载也会在其他地方。

  • 开启双重日志。修改主配置文件/etc/vsftpd/vsftpd.conf,添加以下行:

dual_log_enable=YES

注:

以上配置将开启VSFTPD的双重日志,日志默认路径为/var/log/xferlog和/var/log/vsftpd.log。通过日志可以分析客户端IP来源,访问的用户名,时间,上传和下载的文件等信息。

  • (可选)限制FTP用户的连接数。

  • 修改主配置文件/etc/vsftpd/vsftpd.conf的以下行:

user_config_dir=/etc/vsftpd/user_conf

  • 创建连接数限制配置文件。

以ftpusr1用户的连接数限制到30为配置示例:

# mkdir -p /etc/vsftpd/user_conf

# echo "max_clients=30" >/etc/vsftpd/user_conf/ftpusr1

# chown root:root /etc/vsftpd/user_conf/ftpusr1

  • (可选)限制FTP用户空闲的超时时间。修改主配置文件/etc/vsftpd/vsftpd.conf,添加以下行:

以限制FTP用户空闲的超时时间300秒为配置示例:

idle_session_timeout=300

VSFTPD服务管理

启动服务

在RedHat Enterprise Linux Server 6上:

# service vsftpd start

在RedHat Enterprise Linux Server 7上:

# systemctl start vsftpd.service

在配置或修改完SFTP之后,需要使用restart来重启VSFTPD守护进程。

在RedHat Enterprise Linux Server 6上:

# service vsftpd restart

在RedHat Enterprise Linux Server 7上:

# systemctl restart vsftpd.service

查看服务状态

在RedHat Enterprise Linux Server 6上:

# service vsftpd status

在RedHat Enterprise Linux Server 7上:

# systemctl status vsftpd.service

设置VSFTPD开机启动

在RedHat Enterprise Linux Server 6上:

# chkconfig vsftpd on

在RedHat Enterprise Linux Server 7上:

# systemctl enable vsftpd.service

SFTP服务配置

本章节主要描述行里在RedHat Linux下使用sftp服务的配置规范。默认情况下,需关闭操作系统的sftp服务,具体参考13.9.4 ”关闭SFTP服务”。

SSHD服务安装

SFTP为SSH的一部分,在SSH(RedHatLinux中为OPENSSH)软件包中,已经包含了一个叫作SFTP(Secure File TransferProtocol)的安全文件传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作。正常情况下,安装完操作系统后,默认已经安装SSH服务。

为保证sshd服务的安全性,应在/etc/ssh/sshd_config配置文件中放开如下配置的注释并做相应的修改。请参考章节4.9 SSHD配置

SFTP用户配置

SFTP不支持匿名用户登录,在搭建SFTP之前需创建SFTP用户,为方便统一管理,SFTP用户要求如下:

  1. 创建SFTP用户时用户家目录放在/home目录下。

  2. 限制操作系统登陆,为了保证操作系统安全,应限制SFTP用户不能登录操作系统,在创建SFTP用户时应指定该用户的Shell为/sbin/nologin,限制该用户只能登陆SFTP。

  3. 为了方便统一管理及配置,创建sftpgrp组,所有SFTP用户加入sftpgrp组。

  4. 必须对SFTP用户的密码限制,包括时效限制(口令每90天修改一次)、复杂程度限制(长度最少8位)、非空限制、重复使用次数限制(不得使用6次之内重复的密码)。请参考4.2

    口令策略设置

用户创建示例如下(以下为创建sftpusr1和sftpusr2的示例):

# groupadd sftpgrp

# useradd -s /sbin/nologin -G sftpgrp sftpusr1

# id sftpusr1

uid=2108(sftpusr1) gid=2108(sftpusr1) groups=2108(sftpusr1),2107(sftpgrp)

# passwd sftpusr1

Changing password for user sftpusr1.

New password: #输入密码

Retype new password: #确认密码

passwd: all authentication tokens updated successfully.

# useradd -s /sbin/nologin -G sftpgrp sftpusr2

# id sftpusr2

uid=2109(sftpusr2) gid=2108(sftpusr2) groups=2109(sftpusr2),2107(sftpgrp)

# passwd sftpusr2

Changing password for user sftpusr2.

New password: #输入密码

Retype new password: #确认密码

passwd: all authentication tokens updated successfully.

SFTP数据目录

  • 为了保证数据的安全及传输效率,建议SFTP的数据存放在独立的存储上面,与系统数据分离,存储的挂载点统一为/sftp,文件系统使用LV的形式,且必须是单独的VG,不能与系统VG公用。

  • 为了将不同的SFTP用户的数据分离开来,SFTP用户数据统一放在/sftp目录下以SFTP用户名命名的目录下(/sftp/[username]),/sftp/[username]目录即为SFTP用户的根目录。

  • 为了保证系统的安全性,需要启用SFTP用户的chroot功能(默认未启用),不允许SFTP用户跳出进入SFTP用户根目录以外的目录。打开chroot功能,需设置SFTP用户根目录的拥有者为root用户,权限为755,此时SFTP用户对SFTP用户根目录已无写权限,所以需要在SFTP用户根目录下新建目录供SFTP用户上传数据使用,该目录名称可根据需求自定义创建,但需保证SFTP用户具有读写权限。

配置示例如下(为sftpusr1与sftpusr2创建SFTP用户根目录及数据上传目录):

创建SFTP用户根目录

# mkdir /sftp/sftpusr1

# mkdir /sftp/sftpusr2

若使用root创建SFTP用户根目录,以下4步可省略,目录默认权限已经755,目录拥有者默认已经是root

# chown root /sftp/sftpusr1

# chmod 755 /sftp/sftpusr1

# chown root /sftp/sftpusr2

# chmod 755 /sftp/sftpusr2

创建SFTP用户数据上传目录及赋权

# mkdir /sftp/sftpusr1/data1

# chown sftpusr1:sftpgrp /sftp/sftpusr1/data1

# ls -ld /sftp/sftpusr1/data1

drwxr-xr-x 2 sftpusr1 sftpgrp 4096 Mar 15 15:24 /sftp/sftpusr1/data1

# mkdir /sftp/sftpusr2/data2

# chown sftpusr2:sftpgrp /sftp/sftpusr2/data2

# ls -ld /sftp/sftpusr2/data2

drwxr-xr-x 2 sftpusr2 sftpgrp 4096 Mar 15 15:24 /sftp/sftpusr2/data2

SFTP服务配置

编辑/etc/ssh/sshd_config文件,添加及修改内容如下。

  • 注释以下行:

#Subsystem sftp /usr/libexec/openssh/sftp-server

  • 添加以下行:

Subsystem sftp internal-sftp

  • (可选)限制SFTP用户空闲的超时时间。修改主配置文件/etc/ssh/sshd_config,添加以下行:

以下参数需添加在第一个Match开头的上一行。

以限制SFTP用户空闲的超时时间300秒为配置示例:

ClientAliveCountMax 0

ClientAliveInterval 300

  • 在配置文件的末尾添加以下行:

Match Group sftpgrp

ForceCommand internal-sftp

AllowTcpForwarding no

X11Forwarding no

ChrootDirectory /sftp/%u

主要语法解释:

Match Group sftpgrp:表示对sftp组进行匹配访问控制

ChrootDirectory /sftp/%u:表示限制SFTP用户的根目录在/sftp/%u,%u表示SFTP用户的用户名,这里%u代表所有在sftpgrp组的用户。

注:

SFTP用户的chroot功能和ssh登录不能同时使用,首先,系统配置本身不能满足;其次,两者同时满足是有冲突的,因为配置了chroot就是为了限制SFTP用户进入SFTP用户根目录以外的目录,但若允许ssh登录,那么该用户在ssh登录之后仍然可以进入其他目录。

  • 完成以上配置后,需要重启SSHD服务,操作如下:

# service sshd restart

SFTP日志配置

为保证安全及达到监控的效果,需要开启SFTP的日志做为审计,为防止sftp用户频繁操作,需将日志保存在单独的目录/var/log/sftp中,配置方法如下:

  • 创建日志目录。

# mkdir -p /var/log/sftp

  • 编辑/etc/ssh/sshd_config文件。

  • 在Subsystem行尾添加如下内容:

Subsystem sftp internal-sftp -f AUTHPRIV -l INFO

  • 在ForceCommand行尾添加如下内容:

ForceCommand internal-sftp -f AUTHPRIV -l INFO

  • 使用root用户在SFTP用户的根目录下创建dev目录,确保dev目录的权限为755,拥有人和拥有组为root。

    以SFTP用户sftpusr1和sftpusr2为配置示例:

# mkdir /sftp/sftpusr1/dev

# mkdir /sftp/sftpusr2/dev

# ls -ld /sftp/sftpusr*/dev

drwxr-xr-x 2 root root 4096 Apr 20 10:29 /sftp/sftpusr1/dev

drwxr-xr-x 2 root root 4096 Apr 20 10:29 /sftp/sftpusr2/dev

  • 使用root用户在dev目录下创建log文件,确保log文件的拥有人和拥有组为root,如下所示。

以SFTP用户sftpusr1和sftpusr2为配置示例:

# touch /sftp/sftpusr1/dev/log

# touch /sftp/sftpusr2/dev/log

# ls -l /sftp/sftpusr*/dev/log

-rw-r--r-- 1 root root 0 Apr 20 10:48 /sftp/sftpusr1/dev/log

-rw-r--r-- 1 root root 0 Apr 20 10:48 /sftp/sftpusr2/dev/log

注:

log文件的权限之后会发生变化,不需要管它。如果有其他的SFTP用户,以上两步创建dev目录和log文件的操作同样需要执行。

  • 编辑/etc/rsyslog.conf文件,配置sftp日志文件/var/log/sftp/sftp.log,如下所示。

# The authpriv file has restricted access.

authpriv.* /var/log/secure #在此行下方添加

authpriv.info /var/log/sftp/sftp.log #添加的sftp日志文件

  • 在/etc/rsyslog.conf文件中,添加sftp的日志文件监听接口,如下所示。

以SFTP用户sftpusr1和sftpusr2为配置示例:

\$AddUnixListenSocket /sftp/sftpusr1/dev/log

\$AddUnixListenSocket /sftp/sftpusr2/dev/log

注:

一个用户添加一行,有多少个用户就要添加多少行。

  • 配置sftp日志logrotate转储策略,并自动删除时间较老的日志文件,根据我行需求,sftp日志需每天转储一次,转储时压缩,并保留一个月(30天),配置方法如下所示。

在/etc/logrotate.d/目录下创建sftp日志转储配置文件sftp,并加入如下所示配置:

/var/log/sftp/sftp.log {

daily

rotate 30

compress

copytruncate

dateext

dateformat -%Y%m%d

sharedscripts

postrotate

/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true

Endscript

}

  • 执行以下命令,重启sshd和rsyslog服务。

# service sshd restart

# service rsyslog restart

  • 执行以下命令,检查log文件的权限。

以SFTP用户sftpusr1和sftpusr2为配置示例:

# ls -l /sftp/sftpusr*/dev/log

回显如下类似信息,表示log文件权限正确。

srw-rw-rw- 1 root root 0 Apr 20 11:05 /sftp/sftpusr1/dev/log

srw-rw-rw- 1 root root 0 Apr 20 11:05 /sftp/sftpusr2/dev/log

SFTP用户黑白名单配置

默认情况下,系统中所有设置了密码的用户均可以登录SFTP服务器,如需对用户或组进行限制,可在配置文件/etc/ssh/sshd_config中使用以下参数进行限制。

以下参数需添加在第一个Match开头的上一行。

AllowUsers [user1 user2...] #用户白名单,多个用户使用空格隔开

AllowGroups [group1 group2...] #用户组白名单,多个组使用空格隔开

DenyUsers [user1 user2...] #用户黑名单,多个用户使用空格隔开

DenyGroups [group1 group2...] #用户组黑名单,多个组使用空格隔开

注:

以上参数同样会影响用户的SSH登陆,请谨慎使用。

匹配规则及顺序如下:

  • 以上四个参数若都不配置,则允许所有用户登录SFTP。

  • 若配置了DenyUsers或DenyGroups或者两个都配置了,则拒绝DenyUsers中的用户和DenyGroups中组的用户,允许其他的所有用户。

以SFTP用户sftpusr1和sftpusr2为配置示例:

DenyUsers sftpusr1

DenyGroups sftpgrp1

  • 以上配置将只拒绝sftpusr1用户和sftpgrp1组中的所有用户,其他用户将被允许。

  • 若配置了AllowGroups或AllowGroups或者两个都配置了,则仅允许AllowGroups中的用户和AllowGroups中组的用户,拒绝其他所有用户。

以SFTP用户sftpusr1和sftpusr2为配置示例:

AllowUsers sftpusr2

AllowGroups sftpgrp1

以上配置将只允许sftpusr2用户和sftpgrp1组中的所有用户,其他用户将被拒绝。

  • 若配置了DenyUsers或DenyGroups或者两个都配置了,并且配置了AllowGroups或AllowGroups或者两个都配置了,则仅允许AllowGroups中的用户和AllowGroups中组的用户,拒绝其他的所有用户(包括不存在于DenyUsers中的用户和DenyGroups中组的用户),若一个用户同时存在于拒绝策略(DenyUsers或DenyGroups)和允许策略(AllowGroups或AllowGroups)中,则该用户将被拒绝。

以SFTP用户admin、sftpusr1和sftpusr2,组sftpgr1为配置示例:

AllowUsers sftpusr2 admin

AllowGroups sftpgr1

DenyUsers sftpusr1 admin

DenyGroups sftpgrp2

以上配置将只允许sftpusr2用户和sftpgroup组中的所有用户,其他用户和用户组中的成员将被拒绝,admin用户同时存在于AllowUsers和DenyUsers中,所以会被拒绝,若sftpusr2用户属于sftp组,则sftpusr2用户也会被拒绝。

注:

由于用户和组的黑白名单同样会影响用户和组的SSH登陆,所以在配置黑白名单时,需要确保SSH登陆用户不受限制,否则会造成用户无法登陆。

建议配置

DenyUsers bin daemon adm lp sync shutdown halt mail uucp operator games gopher ftp nobody vcsa saslauth postfix sshd

以上配置将系统内uid低于100的所有非root用户加入到黑名单,其他系统用户根据需要添加,添加后列表内用户将无法SSH与sftp登陆。

  • 完成以上配置后,执行以下命令,需要重启SSHD服务。

# service sshd restart

SFTP主机中的用户黑白名单配置

如果需要限制某个特定的用户在特定主机的访问权限,则可以在用户黑白名单中用户名后面加上主机IP,来绑定用户和主机的访问权限,不支持对用户组的限制。

以下参数需添加在第一个Match开头的上一行。

#主机用户白名单,多个用户用空格隔开,同一用户与多个主机用逗号隔开,如下所示。

AllowUsers [user1\@ip1 user2\@ip1,ip2 ]

#主机用户黑名单,多个用户用空格隔开,同一用户与多个主机用逗号隔开,如下所示。

DenyUsers [user1\@ip1 user2\@ip1,ip2 ]

匹配规则与顺序和用户黑白名单相同。

配置示例如下所示。

  • 配置拒绝sftpusr1从172.168.0.61和172.168.0.62访问,同时拒绝sftpusr2从任何主机访问。

DenyUsers sftpusr1\@172.168.0.61,172.168.0.62 sftpusr2

  • 配置允许sftpusr1从任何主机访问,同时仅允许sftpusr2从172.168.0.0网段访问。

AllowUsers sftpusr1 sftpusr2\@172.168.0.0/24

  • 配置允许sftpusr1从除了172.168.0.61,172.168.0.62之外的所有主机访问,同时拒绝sftpusr2从任何主机访问(允许与拒绝冲突时,拒绝优先)。

AllowUsers sftpusr1 sftpusr2\@172.168.0.0/24

DenyUsers sftpusr1\@172.168.0.61,172.168.0.62 sftpusr2

SFTP主机黑白名单配置

默认情况下,系统中防火墙已经关闭,所有网络可达的主机均可访问SFTP服务器,如需对主机或者IP进行限制,可通过配置文件/etc/hosts.allow(白名单)和/etc/hosts.deny(黑名单)来实现,默认情况下,两个文件为空,即允许所有网络可达的主机。

语法示例:

SSHD: 10.1.1.1 server1 #主机和IP的写法,多个用空格或者逗号隔开

SSHD: 10.1.1. 10.2. #网段的写法,多个用空格或者逗号隔开

SSHD:.example.com #域名的写法,多个用空格或者逗号隔开

SSHD: ALL #表示所有

匹配规则及顺序如下所示:

  • 若/etc/hosts.allow和/etc/hosts.deny均为空,则允许所有。

  • 若/etc/hosts.deny为空,不论/etc/hosts.allow是否为空,均允许所有。

  • 若/etc/hosts.deny不为空,不论/etc/hosts.allow是否为空,则只拒绝/etc/hosts.deny中的主机;若一个主机同时存在于/etc/hosts.deny和/etc/hosts.allow中,则允许优先。

行内缺省配置:

为防止不明网络的主机连接,深圳和上海的服务器默认黑白名单规则应按如下设置:

  • 在/etc/hosts.deny中添加如下内容。

SSHD: ALL #拒绝所有主机连接SSH

  • 在/etc/hosts.allow中添加如下内容。

SSHD: 10.0. 10.1. 10.2. 10.3. #允许深圳和上海的主机连接SSH

以上配置将允许深圳和上海的主机连接SSH,并拒绝其他所有主机,对于有特殊需求,可按实际情况进行配置。

注:

以上配置立即生效,不需要重启任何服务,且同时满足于SSH连接和SFTP登陆,需谨慎配置。

SSHD服务管理

启动服务

SFTP使用sshd守护进程(端口号默认是22),启动sshd守护进程后,默认已经启动了SFTP,启动方式如下所示。

在RedHat Enterprise Linux Server 6上:

# service sshd start

在RedHat Enterprise Linux Server 7上:

# systemctl start sshd.service

由于SSHD服务默认已经启动,在配置完SFTP之后,需要使用restart来重启SSHD守护进程,方法如下所示。

在RedHat Enterprise Linux Server 6上:

# service sshd restart

在RedHat Enterprise Linux Server 7上:

# systemctl restart sshd.service

查看服务状态

在RedHat Enterprise Linux Server 6上:

# service sshd status

在RedHat Enterprise Linux Server 7上:

# systemctl status sshd.service

设置SSHD开机启动

在RedHat Enterprise Linux Server 6上:

# chkconfig sshd on

在RedHat Enterprise Linux Server 7上:

# systemctl enable sshd.service

关闭SFTP服务

编辑/etc/ssh/sshd_config文件,修改内容如下。

  • 注释以下行:

#Subsystem sftp /usr/libexec/openssh/sftp-server

LVM卷配置管理

本章节主要描述行里在RedHat Linux下磁盘使用LVM管理的配置规范。默认情况下,需使用分区的方式进行LVM管理。对文件系统大小进行扩展了以后,不建议在对文件系统进行缩小操作。

命令描述

命令及参数说明

命令 命令及参数描述
pvcreate 用于创建物理卷。
vgcreate 用于创建逻辑卷组。
lvcreate 用于创建逻辑卷。
vgextend 用于扩展逻辑卷组。
lvextend 用于扩展逻辑卷。
resize2fs 用于扩展ext3或者ext4类型的文件系统。
xfs_growfs 用于扩展xfs类型的文件系统。
mkfs.ext4 用于将逻辑卷或者分区格式化为ext4类型文件系统
mkfs.xfs 用于将逻辑卷或者分区格式化为xfs类型文件系统

配置LVM

使用普通分区配置LVM,首先要将普通分区转换为lvm的分区形式,再将普通分区创建为物理卷,再将物理卷创建为逻辑卷组,最后使用逻辑卷组创建逻辑卷。

以磁盘/dev/sdc为例进行说明,在实际使用过程中,请使用实际设备名称代替/dev/sdc。

磁盘/dev/sdc大小为100GB。

创建分区

  1. 使用root用户登录服务器。

  2. 执行以下命令,创建磁盘label。

    # parted ‑s /dev/sdc mklabel msdos

  3. 执行以下命令,查看磁盘分区信息,获取新建分区的起始位置。

    # parted /dev/sdc print

  4. 执行以下命令,创建分区。

    # parted -s --align cylinder <设备名称> mkpart primary <文件系统类型> <起始位置> <结束位置>

例如:设备名称为/dev/sdc,新建分区的起始位置为512B,将磁盘的空间全部分配给新建的分区,因此,新建分区的结束位置为107GB,使用的文件系统类型为ext4。

>   \# parted -s --align cylinder /dev/sdc mkpart primary ext4 512B 107GB
  1. 执行以下命令,使用新建的分区生效。

    # partx /dev/sdc

  2. 执行以下命令,查看新建的分区。

    # parted /dev/sdc print

    磁盘/dev/sdc只有一个分区,因此,新建分区的编号为1。

  3. 执行以下命令,设置新建分区为LVM类型。

    # parted /dev/sdc set 1 lvm on

在实际使用过程中,请使用实际设备名称代替/dev/sdc和分区编号1。

  1. 执行以下命令,使设置生效。

    # partx -a /dev/sdc

  2. 执行以下命令,查看新建分区的设置,如下图所示,分区为LVM类型。

    # parted /dev/sda print

创建PV

以分区/dev/sdc1为例进行说明。实际使用过程中,请使用实际分区代替/dev/sdc1。

  1. 执行以下命令,将磁盘分区创建为物理卷PV。

    # pvcreate /dev/sdc1

创建VG

以物理卷/dev/sdc1,创建的卷组名是VolGroup为例进行说明。实际使用过程中,请使用实际分区代替/dev/sdc1。

  1. 执行以下命令,创建VG。

    # vgcreate VolGroup /dev/sdc1

扩展VG

以物理卷/dev/sdc1,需要扩展的卷组名是VolGroup为例进行说明。实际使用过程中,请使用实际分区代替/dev/sdc1。

  1. 执行以下命令,创建VG。

    # vgextend VolGroup /dev/sdc1

创建LV

以卷组名是VolGroup,lv的名称是lv_data为例进行说明。实际使用过程中,请使用实际卷组名称和逻辑卷名称代替VolGroup和lv_data。

  1. 执行以下命令,创建LV。

    # lvcreate -L +100M -n lv_data VolGroup

至此,LVM的配置过程已全部完成。若要使用逻辑卷,需要将其格式化为文件系统,请参考章节 14.2.7"创建文件系统"

扩展LV

以卷组名是VolGroup,lv的名称是lv_data,lv扩展1GB为例进行说明。实际使用过程中,请使用实际卷组名称和逻辑卷名称代替VolGroup和lv_data。

  1. 执行以下命令,扩展LV。

    # lvextend -L +1G /dev/VolGroup/lv_data

至此,lv的扩展操作已经完成。因逻辑卷lv_data已经被格式化为文件系统来使用,因此,还需要扩展文件系统,才能正常使用扩展的逻辑卷的空间,请参考章节 14.2.8"扩展文件系统"

创建文件系统

以卷组名是VolGroup,lv的名称是lv_data,挂载点是/data,文件系统类型是ext4为例进行说明。实际使用过程中,请使用实际卷组名称、逻辑卷名称、挂载点、文件系统类型代替VolGroup、lv_data、/data、ext4。

  1. 执行以下命令,格式化lv为文件系统。

    # mkfs.ext4 /dev/VolGroup/lv_data

  2. 执行以下命令,创建挂载点。

    # mkdir /data

  3. 执行以下命令,挂载逻辑卷。

    # mount -o rw,acl /dev/mapper/VolGroup-lv_data /data

  4. 执行以下命令,修改/etc/fstab文件,使新建的文件系统随开机启动。

    echo "/dev/mapper/VolGroup-lv_data /data ext4 defaults,acl 0 0" >>/etc/fstab

扩展文件系统

以卷组名是VolGroup,lv的名称是lv_data,文件系统类型是ext4为例进行说明。实际使用过程中,请使用实际卷组名称、逻辑卷名称代替VolGroup、lv_data。

  1. 执行以下命令,修改/etc/fstab文件,使新建的文件系统随开机启动。

    # resize2fs /dev/VolGroup/lv_data

  • 若为xfs类型文件系统,须使用命令xfs_growfs对文件系统进行扩展。

  • xfs类型文件系统,只能扩展,不能缩小。

Editing is enabled. Use the "Save changes" button below the editor to commit modifications to this file.