蚊章汇 - RHCE
type: channel
link: https://linuxcn.bwsl.wang/tag/RHCE/
items: RHCE 系列（十）：在 RHEL/CentOS 7 中设置 NTP（网络时间协议）服务器
items: RHCE 系列（九）：如何使用无客户端配置 Postfix 邮件服务器（SMTP）
items: RHCE 系列（八）：在 Apache 上使用网络安全服务（NSS）实现 HTTPS
items: RHCE 系列（七）：在 Linux 客户端配置基于 Kerberos 身份验证的 NFS 服务器
items: RHCE 系列（五）：如何在 RHEL 7 中管理系统日志（配置、轮换以及导入到数据库）
items: RHCE 系列（四）： 使用 Shell 脚本自动化 Linux 系统维护任务
items: RHCE 系列（三）：如何使用 Linux 工具集生成和发送系统活动报告
items: RHCE 系列（二）：如何进行包过滤、网络地址转换和设置内核运行时参数
items: RHCE 系列（一）：如何设置和测试静态网络路由
items: 12 个全球认可的 Linux 认证

RHCE 系列（十）：在 RHEL/CentOS 7 中设置 NTP（网络时间协议）服务器
type: item
date: 2015-12-08T18:21:00+08:00
description: 网络时间协议 - NTP - 是运行在传输层 123 号端口的 UDP 协议，它允许计算机通过网络同步准确时间。随着时间的流逝，计算机内部时间会出现漂移，这会导致时间不一致问题，尤其是对于服务器和客户端日志文件，或者你想要复制服务器的资源或数据库。在 CentOS 和 RHEL 7 上安装 NTP 服务器前置要求：CentOS 7 安装过程RHEL 安装过程额外要求：注册并启用 RHEL 7 更新订阅在 CentOS/RHCE 7 上配置静态 IP在 CentOS/RHEL 7 上停用并移除不需要的服务这篇指南会告诉你如何在 CentOS/RHCE 7 上安装和配置 NTP 服务器，并使用 NTP 公共时间服务器池 （ NTP Public Pool Time Servers ） 列表中和你服务器地理位置最近的可用节点中同步时间。步骤一：安装和配置 NTP 守护进程1、 官方 CentOS /RHEL 7 库默认提供 NTP 服务器安装包，可以通过使用下面的命令安装。# yum install ntp 安装 NTP 服务器2、 安装完服务器之后，首先到官方 NTP 公共时间服务器池 （ NTP Public Pool Time Servers ） ，选择你服务器物理位置所在的洲，然后搜索你的国家位置，然后会出现 NTP 服务器列表。NTP 服务器池3、 然后打开编辑 NTP 守护进程的主配置文件，注释掉来自 pool.ntp.org 项目的公共服务器默认列表，并用类似下面截图中提供给你所在国家的列表替换。（LCTT 译注：中国使用 0.cn.pool.ntp.org 等）配置 NTP 服务器4、 下一步，你需要允许来自你的网络的客户端和这台服务器同步时间。为了做到这点，添加下面一行到 NTP 配置文件，其中 restrict 语句控制允许哪些网络查询和同步时间 - 请根据需要替换网络 IP。restrict 192.168.1.0 netmask 255.255.255.0 nomodify notrap nomodify notrap 语句意味着不允许你的客户端配置服务器或者作为同步时间的节点。5、 如果你需要用于错误处理的额外信息，以防你的 NTP 守护进程出现问题，添加一个 logfile 语句，用于记录所有 NTP 服务器问题到一个指定的日志文件。logfile /var/log/ntp.log 启用 NTP 日志6、 在你编辑完所有上面解释的配置并保存关闭 ntp.conf 文件后，你最终的配置看起来像下面的截图。NTP 服务器配置步骤二：添加防火墙规则并启动 NTP 守护进程7、 NTP 服务使用 OSI 传输层（第四层）的 123 号 UDP 端口。它是为了避免可变延迟的影响所特别设计的。要在 RHEL/CentOS 7 中开放这个端口，可以对 Firewalld 服务使用下面的命令。# firewall-cmd --add-service=ntp --permanent # firewall-cmd --reload 在 Firewall 中开放 NTP 端口8、 你在防火墙中开放了 123 号端口之后，启动 NTP 服务器并确保系统范围内可用。用下面的命令管理服务。# systemctl start ntpd # systemctl enable ntpd # systemctl status ntpd 启动 NTP 服务步骤三：验证服务器时间同步9、 启动了 NTP 守护进程后，用几分钟等服务器和它的服务器池列表同步时间，然后运行下面的命令验证 NTP 节点同步状态和你的系统时间。# ntpq -p # date -R 验证 NTP 时间同步10、 如果你想查询或者和你选择的服务器池同步，你可以使用 ntpdate 命令，后面跟服务器名或服务器地址，类似下面建议的命令行示例。# ntpdate -q 0.ro.pool.ntp.org 1.ro.pool.ntp.org 同步 NTP 时间步骤四：设置 Windows NTP 客户端11、 如果你的 windows 机器不是域名控制器的一部分，你可以配置 Windows 和你的 NTP服务器同步时间。在任务栏右边 -> 时间 -> 更改日期和时间设置 -> 网络时间标签 -> 更改设置 -> 和一个网络时间服务器检查同步 -> 在 Server 空格输入服务器 IP 或 FQDN -> 马上更新 -> OK。和 NTP 同步 Windows 时间就是这些。在你的网络中配置一个本地 NTP 服务器能确保你所有的服务器和客户端有相同的时间设置，以防出现网络连接失败，并且它们彼此都相互同步。via: http://www.tecmint.com/install-n…

RHCE 系列（九）：如何使用无客户端配置 Postfix 邮件服务器（SMTP）
type: item
date: 2015-12-07T18:27:00+08:00
description: 尽管现在有很多在线联系方式，电子邮件仍然是一个人传递信息给远在世界尽头或办公室里坐在我们旁边的另一个人的有效方式。下面的图描述了电子邮件从发送者发出直到信息到达接收者收件箱的传递过程。电子邮件如何工作要实现这一切，背后发生了好多事情。为了使电子邮件信息从一个客户端应用程序（例如 Thunderbird、Outlook，或者 web 邮件服务，例如 Gmail 或 Yahoo 邮件）投递到一个邮件服务器，并从其投递到目标服务器并最终到目标接收人，每个服务器上都必须有 SMTP（简单邮件传输协议）服务。这就是为什么我们要在这篇博文中介绍如何在 RHEL 7 中设置 SMTP 服务器，从本地用户发送的邮件（甚至发送到另外一个本地用户）被 转发 （ forward ） 到一个中央邮件服务器以便于访问。在这个考试的要求中这称为 无客户端 （ null-client ） 安装。在我们的测试环境中将包括一个 起源 （ originating ） 邮件服务器和一个中央服务器或 中继主机 （ relayhost ） 。起源邮件服务器： （主机名: box1.mydomain.com / IP: 192.168.0.18）中央邮件服务器： （主机名: mail.mydomain.com / IP: 192.168.0.20）我们在两台机器中都会使用你熟知的 /etc/hosts 文件做名字解析：192.168.0.18 box1.mydomain.com box1 192.168.0.20 mail.mydomain.com mail 安装 Postfix 和防火墙/SELinux 注意事项首先，我们需要（在两台机器上）：1、 安装 Postfix：# yum update && yum install postfix 2、 启动服务并启用开机自动启动：# systemctl start postfix # systemctl enable postfix 3、 允许邮件流量通过防火墙：# firewall-cmd --permanent --add-service=smtp # firewall-cmd --add-service=smtp 在防火墙中开通邮件服务器端口4、 在 box1.mydomain.com 配置 PostfixPostfix 的主要配置文件是 /etc/postfix/main.cf。这个文件本身是一个很大的文本文件，因为其中包含了解释程序设置的用途的注释。为了简洁，我们只显示了需要编辑的行（没错，在起源服务器中你需要保留 mydestination 为空；否则邮件会被存储到本地，而不是我们实际想要发往的中央邮件服务器）：myhostname = box1.mydomain.com mydomain = mydomain.com myorigin = $mydomain inet_interfaces = loopback-only mydestination = relayhost = 192.168.0.20 5、 在 mail.mydomain.com 配置 Postfixmyhostname = mail.mydomain.com mydomain = mydomain.com myorigin = $mydomain inet_interfaces = all mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain mynetworks = 192.168.0.0/24, 127.0.0.0/8 如果还没有设置，还要设置相关的 SELinux 布尔值永久为真：# setsebool -P allow_postfix_local_write_mail_spool on 设置 Postfix SELinux 权限上面的 SELinux 布尔值会允许中央服务器上的 Postfix 可以写入 邮件池 （ mail spool ） 。6、 在两台机子上重启服务以使更改生效：# systemctl restart postfix 如果 Postfix 没有正确启动，你可以使用下面的命令进行错误处理。# systemctl -l status postfix # journalctl -xn # postconf -n 测试 Postfix 邮件服务要测试邮件服务器，你可以使用任何 邮件用户代理 （ Mail User Agent，MUA ） ，例如 mail 或 mutt。由于我个人喜欢 mutt，我会在 box1 中使用它发送邮件给用户 tecmint，并把现有文件（mailbody.txt）作为信息内容：# mutt -s "Part…

RHCE 系列（八）：在 Apache 上使用网络安全服务（NSS）实现 HTTPS
type: item
date: 2015-12-06T17:00:00+08:00
description: 如果你是一个负责维护和确保 web 服务器安全的系统管理员，你需要花费最大的精力确保服务器中处理和通过的数据任何时候都受到保护。RHCE 系列：第八部分 - 使用网络安全服务（NSS）为 Apache 通过 TLS 实现 HTTPS为了在客户端和服务器之间提供更安全的连接，作为 HTTP 和 SSL（ Secure Sockets Layer （ 安全套接层 ） ）或者最近称为 TLS（ Transport Layer Security （ 传输层安全 ） ）的组合，产生了 HTTPS 协议。由于一些严重的安全漏洞，SSL 已经被更健壮的 TLS 替代。由于这个原因，在这篇文章中我们会解析如何通过 TLS 实现你 web 服务器和客户端之间的安全连接。这里假设你已经安装并配置好了 Apache web 服务器。如果还没有，在进入下一步之前请阅读下面站点中的文章。在 RHEL/CentOS 7 上安装 LAMP（Linux，MySQL/MariaDB，Apache 和 PHP）安装 OpenSSL 和一些工具包首先，确保正在运行 Apache 并且允许 http 和 https 通过防火墙：# systemctl start http # systemctl enable http # firewall-cmd --permanent –-add-service=http # firewall-cmd --permanent –-add-service=https 然后安装一些必需的软件包：# yum update && yum install openssl mod_nss crypto-utils 重要：请注意如果你想使用 OpenSSL 库而不是 NSS（ Network Security Service （ 网络安全服务 ） ）实现 TLS，你可以在上面的命令中用 mod\_ssl 替换 mod\_nss（使用哪一个取决于你，但在这篇文章中我们会使用 NSS，因为它更加安全，比如说，它支持最新的加密标准，比如 PKCS #11）。如果你使用 mod\_nss，首先要卸载 mod\_ssl，反之如此。# yum remove mod_ssl 配置 NSS（网络安全服务）安装完 mod\_nss 之后，会创建默认的配置文件 /etc/httpd/conf.d/nss.conf。你应该确保所有 Listen 和 VirualHost 指令都指向 443 号端口（HTTPS 默认端口）：nss.conf – 配置文件Listen 443 VirtualHost _default_:443 然后重启 Apache 并检查是否加载了 mod\_nss 模块：# apachectl restart # httpd -M | grep nss 检查 Apache 是否加载 mod\_nss 模块下一步，在 /etc/httpd/conf.d/nss.conf 配置文件中做以下更改：1、 指定 NSS 数据库目录。你可以使用默认的目录或者新建一个。本文中我们使用默认的：NSSCertificateDatabase /etc/httpd/alias 2、 通过保存密码到数据库目录中的 /etc/httpd/nss-db-password.conf 文件来避免每次系统启动时要手动输入密码：NSSPassPhraseDialog file:/etc/httpd/nss-db-password.conf 其中 /etc/httpd/nss-db-password.conf 只包含以下一行，其中 mypassword 是后面你为 NSS 数据库设置的密码：internal:mypassword 另外，要设置该文件的权限和属主为 0640 和 root:apache：# chmod 640 /etc/httpd/nss-db-password.conf # chgrp apache /etc/httpd/nss-db-password.conf 3、 由于 POODLE SSLv3 漏洞，红帽建议停用 SSL 和 TLSv1.0 之前所有版本的 TLS（更多信息可以查看这里）。确保 NSSProtocol 指令的每个实例都类似下面一样（如果你没有托管其它虚拟主机，很可能只有一条）：NSSProtocol TLSv1.0,TLSv1.1 4、 由于这是一个自签名证书，Apache 会拒绝重启，并不会识别为有效发行人。由于这个原因，对于这种特殊情况我们还需要添加：NSSEnforceValidCerts off 5、 虽然并不是严格要求，为 NSS 数据库设置一个密码同样很重要：# certutil -W -d /etc/httpd/alias 为 NS…

RHCE 系列（七）：在 Linux 客户端配置基于 Kerberos 身份验证的 NFS 服务器
type: item
date: 2015-11-17T21:38:59+08:00
description: 在本系列的前一篇文章，我们回顾了如何在可能包括多种类型操作系统的网络上配置 Samba 共享。现在，如果你需要为一组类 Unix 客户端配置文件共享，很自然的你会想到网络文件系统，或简称 NFS。RHCE 系列：第七部分 - 设置使用 Kerberos 进行身份验证的 NFS 服务器在这篇文章中我们会介绍配置基于 Kerberos 身份验证的 NFS 共享的整个流程。假设你已经配置好了一个 NFS 服务器和一个客户端。如果还没有，可以参考 安装和配置 NFS 服务器 - 它列出了需要安装的依赖软件包并解释了在进行下一步之前如何在服务器上进行初始化配置。另外，你可能还需要配置 SELinux 和 firewalld 以允许通过 NFS 进行文件共享。下面的例子假设你的 NFS 共享目录在 box2 的 /nfs：# semanage fcontext -a -t public_content_rw_t "/nfs(/.*)?" # restorecon -R /nfs # setsebool -P nfs_export_all_rw on # setsebool -P nfs_export_all_ro on （其中 -P 标记指示重启持久有效）。最后，别忘了：创建 NFS 组并配置 NFS 共享目录1、 新建一个名为 nfs 的组并给它添加用户 nfsnobody，然后更改 /nfs 目录的权限为 0770，组属主为 nfs。于是，nfsnobody（对应请求用户）在共享目录有写的权限，你就不需要在 /etc/exports 文件中使用 norootsquash（LCTT 译注：设为 root\_squash 意味着在访问 NFS 服务器上的文件时，客户机上的 root 用户不会被当作 root 用户来对待）。# groupadd nfs # usermod -a -G nfs nfsnobody # chmod 0770 /nfs # chgrp nfs /nfs 2、 像下面那样更改 export 文件（/etc/exports）只允许从 box1 使用 Kerberos 安全验证的访问（sec=krb5）。注意：anongid 的值设置为之前新建的组 nfs 的 GID：exports – 添加 NFS 共享/nfs box1(rw,sec=krb5,anongid=1004) 3、 再次 exprot（-r）所有（-a）NFS 共享。为输出添加详情（-v）是个好主意，因为它提供了发生错误时解决问题的有用信息：# exportfs -arv 4、 重启并启用 NFS 服务器以及相关服务。注意你不需要启动 nfs-lock 和 nfs-idmapd，因为系统启动时其它服务会自动启动它们：# systemctl restart rpcbind nfs-server nfs-lock nfs-idmap # systemctl enable rpcbind nfs-server 测试环境和其它前提要求在这篇指南中我们使用下面的测试环境：客户端机器 [box1: 192.168.0.18]NFS / Kerberos 服务器 [box2: 192.168.0.20] （也称为密钥分发中心，简称 KDC）。注意：Kerberos 服务是至关重要的认证方案。正如你看到的，为了简便，NFS 服务器和 KDC 在同一台机器上，当然如果你有更多可用机器你也可以把它们安装在不同的机器上。两台机器都在 mydomain.com 域。最后同样重要的是，Kerberos 要求客户端和服务器中至少有一个域名解析的基本方式和网络时间协议服务，因为 Kerberos 身份验证的安全一部分基于时间戳。为了配置域名解析，我们在客户端和服务器中编辑 /etc/hosts 文件：host 文件 – 为域添加 DNS192.168.0.18 box1.mydomain.com box1 192.168.0.20 box2.mydomain.com box2 在 RHEL 7 中，chrony 是用于 NTP 同步的默认软件：# yum install chrony # systemctl start chronyd # systemctl enable chronyd 为了确保 chrony 确实在和时间服务器同步你系统的时间，你可能要输入下面的命令两到三次，确保时间偏差尽可能接近 0：# chronyc tracking 用 Chrony 同步服务器时间安装和配置 Kerberos要设置 KDC，首先在客户端和服务器安装下面的软件包（客户端不需要 server 软件包）：# yum update && yum install krb5-server krb5-…

RHCE 系列（五）：如何在 RHEL 7 中管理系统日志（配置、轮换以及导入到数据库）
type: item
date: 2015-11-06T17:53:00+08:00
description: 为了确保你的 RHEL 7 系统安全，你需要通过查看日志文件来监控系统中发生的所有活动。这样，你就可以检测到任何不正常或有潜在破坏的活动并进行系统故障排除或者其它恰当的操作。RHCE 考试 - 第五部分：使用 Rsyslog 和 Logrotate 管理系统日志在 RHEL 7 中，rsyslogd 守护进程负责系统日志，它从 /etc/rsyslog.conf（该文件指定所有系统日志的默认路径）和 /etc/rsyslog.d 中的所有文件（如果有的话）读取配置信息。Rsyslogd 配置快速浏览一下 rsyslog.conf 会是一个好的开端。该文件分为 3 个主要部分：模块（rsyslong 按照模块化设计），全局指令（用于设置 rsyslogd 守护进程的全局属性），以及规则。正如你可能猜想的，最后一个部分指示记录或显示什么以及在哪里保存（也称为 选择子 （ selector ） ），这也是这篇文章关注的重点。rsyslog.conf 中典型的一行如下所示：Rsyslogd 配置在上面的图片中，我们可以看到一个选择子包括了一个或多个用分号分隔的 “设备:优先级” （ Facility:Priority ） 对，其中设备描述了消息类型（参考 RFC 3164 4.1.1 章节，查看 rsyslog 可用的完整设备列表），优先级指示它的严重性，这可能是以下几种之一：debuginfonoticewarningerrcritalertemerg尽管 none 并不是一个优先级，不过它意味着指定设备没有任何优先级。注意：给定一个优先级表示该优先级以及之上的消息都应该记录到日志中。因此，上面例子中的行指示 rsyslogd 守护进程记录所有优先级为 info 以及以上（不管是什么设备）的除了属于 mail、authpriv、以及 cron 服务（不考虑来自这些设备的消息）的消息到 /var/log/messages。你也可以使用逗号将多个设备分为一组，对同组中的设备使用相同的优先级。例如下面这行：*.info;mail.none;authpriv.none;cron.none /var/log/messages 也可以这样写：*.info;mail,authpriv,cron.none /var/log/messages 换句话说，mail、authpriv 以及 cron 被分为一组，并使用关键字 none。创建自定义日志文件要把所有的守护进程消息记录到 /var/log/tecmint.log，我们需要在 rsyslog.conf 或者 /etc/rsyslog.d 目录中的单独文件（这样易于管理）添加下面一行：daemon.* /var/log/tecmint.log 然后重启守护进程（注意服务名称不以 d 结尾）：# systemctl restart rsyslog 在随便重启两个守护进程之前和之后查看下自定义日志的内容：创建自定义日志文件作为一个自学练习，我建议你重点关注设备和优先级，添加额外的消息到已有的日志文件或者像上面那样创建一个新的日志文件。使用 Logrotate 轮换日志为了防止日志文件无限制增长，logrotate 工具用于轮换、压缩、移除或者通过电子邮件发送日志，从而减轻管理会产生大量日志文件系统的困难。（译者注：日志轮换（rotate）是系统管理中归档每天产生的日志文件的自动化过程）Logrotate 作为一个 cron 任务（/etc/cron.daily/logrotate）每天运行，并从 /etc/logrotate.conf 和 /etc/logrotate.d 中的文件（如果有的话）读取配置信息。对于 rsyslog，即使你可以在主文件中为指定服务包含设置，为每个服务创建单独的配置文件能帮助你更好地组织设置。让我们来看一个典型的 logrotate.conf：Logrotate 配置在上面的例子中，logrotate 会为 /var/log/wtmp 进行以下操作：尝试每个月轮换一次，但至少文件要大于 1MB，然后用 0664 权限、用户 root、组 utmp 创建一个新的日志文件。下一步只保存一个归档日志，正如轮换指令指定的：每月 Logrotate 日志让我们再来看看 /etc/logrotate.d/httpd 中的另一个例子：轮换 Apache 日志文件你可以在 logrotate 的 man 手册（man logrotate 和 man logrotate.conf）中阅读更多有关它的设置。为了方便你的阅读，本文还提供了两篇文章的 PDF 格式。作为一个系统工程师，很可能由你决定多久按照什么格式保存一次日志，这取决于你是否有一个单独的分区/逻辑卷给 /var。否则，你真的要考虑…

RHCE 系列（四）： 使用 Shell 脚本自动化 Linux 系统维护任务
type: item
date: 2015-11-05T17:48:00+08:00
description: 之前我听说高效的系统管理员的一个特点是懒惰。一开始看起来很矛盾，但作者接下来解释了其中的原因：RHCE 系列：第四部分 - 自动化 Linux 系统维护任务如果一个系统管理员花费大量的时间解决问题以及做重复的工作，你就应该怀疑他这么做是否正确。换句话说，一个高效的系统管理员/工程师应该制定一个计划使得其尽量花费少的时间去做重复的工作，以及通过使用本系列中第三部分 使用 Linux 工具集监视系统活动报告 介绍的工具来预见问题。因此，尽管看起来他/她没有做很多的工作，但那是因为 shell 脚本帮助完成了他的/她的大部分任务，这也就是本章我们将要探讨的东西。什么是 shell 脚本？简单的说，shell 脚本就是一个由 shell 一步一步执行的程序，而 shell 是在 Linux 内核和最终用户之间提供接口的另一个程序。默认情况下，RHEL 7 中用户使用的 shell 是 bash（/bin/bash）。如果你想知道详细的信息和历史背景，你可以查看这个维基页面。关于这个 shell 提供的众多功能的介绍，可以查看 man 手册，也可以从 （Bash 命令）处下载 PDF 格式。除此之外，假设你已经熟悉 Linux 命令（否则我强烈建议你首先看一下 Tecmint.com 中的文章 从新手到系统管理员指南 ）。现在让我们开始吧。写一个脚本显示系统信息为了方便，首先让我们新建一个目录用于保存我们的 shell 脚本：# mkdir scripts # cd scripts 然后用喜欢的文本编辑器打开新的文本文件 system_info.sh。我们首先在头部插入一些注释以及一些命令：#!/bin/bash # RHCE 系列第四部分示例脚本 # 该脚本会返回以下这些系统信息： # -主机名称: echo -e "\e[31;43m***** HOSTNAME INFORMATION *****\e[0m" hostnamectl echo "" # -文件系统磁盘空间使用： echo -e "\e[31;43m***** FILE SYSTEM DISK SPACE USAGE *****\e[0m" df -h echo "" # -系统空闲和使用中的内存： echo -e "\e[31;43m ***** FREE AND USED MEMORY *****\e[0m" free echo "" # -系统启动时间： echo -e "\e[31;43m***** SYSTEM UPTIME AND LOAD *****\e[0m" uptime echo "" # -登录的用户： echo -e "\e[31;43m***** CURRENTLY LOGGED-IN USERS *****\e[0m" who echo "" # -使用内存最多的 5 个进程 echo -e "\e[31;43m***** TOP 5 MEMORY-CONSUMING PROCESSES *****\e[0m" ps -eo %mem,%cpu,comm --sort=-%mem | head -n 6 echo "" echo -e "\e[1;32mDone.\e[0m" 然后，给脚本可执行权限：# chmod +x system_info.sh 运行脚本：./system_info.sh 注意为了更好的可视化效果各部分标题都用颜色显示：服务器监视 Shell 脚本颜色功能是由以下命令提供的：echo -e "\e[COLOR1;COLOR2m<YOUR TEXT HERE>\e[0m" 其中 COLOR1 和 COLOR2 是前景色和背景色（Arch Linux Wiki 有更多的信息和选项解释）， 是你想用颜色显示的字符串。使任务自动化你想使其自动化的任务可能因情况而不同。因此，我们不可能在一篇文章中覆盖所有可能的场景，但是我们会介绍使用 shell 脚本可以使其自动化的三种典型任务：1) 更新本地文件数据库， 2) 查找（或者删除）有 777 权限的文件， 以及 3) 文件系统使用超过定义的阀值时发出警告。让我们在脚本目录中新建一个名为 auto_tasks.sh 的文件并添加以下内容：#!/bin/bash # 自动化任务示例脚本： # -更新本地文件数据库： echo -e "\e[4;32mUPDATING LOCAL FILE DATABASE\e[0m" updatedb if [ $? == 0 ]; then echo "The local file database was updated correctly." else echo "The local file database was not updated …

RHCE 系列（三）：如何使用 Linux 工具集生成和发送系统活动报告
type: item
date: 2015-11-03T16:15:00+08:00
description: 作为一个系统工程师，你经常需要生成一些显示系统资源利用率的报告，以便确保：1）正在合理利用系统，2）防止出现瓶颈，3）确保可扩展性，以及其它原因。RHCE 第三部分：监视 Linux 性能活动报告除了著名的用于检测磁盘、内存和 CPU 使用率的原生 Linux 工具 - 可以给出很多例子，红帽企业版 Linux 7 还提供了另外两个可以为你的报告更多数据的工具套装：sysstat 和 dstat。在这篇文章中，我们会介绍两者，但首先让我们来回顾一下传统工具的使用。原生 Linux 工具使用 df，你可以报告磁盘空间以及文件系统的 inode 使用情况。你需要监视这两者，因为缺少磁盘空间会阻止你保存更多文件（甚至会导致系统崩溃），就像耗尽 inode 意味着你不能将文件链接到对应的数据结构，从而导致同样的结果：你不能将那些文件保存到磁盘中。# df -h [以人类可读形式显示输出] # df -h --total [生成总计] 检查 Linux 总的磁盘使用# df -i [显示文件系统的 inode 数目] # df -i --total [生成总计] 检查 Linux 总的 inode 数目用 du，你可以估计文件、目录或文件系统的文件空间使用。举个例子，让我们来看看 /home 目录使用了多少空间，它包括了所有用户的个人文件。第一条命令会返回整个 /home 目录当前使用的所有空间，第二条命令会显示子目录的分类列表：# du -sch /home # du -sch /home/* 检查 Linux 目录磁盘大小别错过了：检查 Linux 磁盘空间使用的 12 个 ‘df’ 命令例子查看文件/目录磁盘使用的 10 个 ‘du’ 命令例子另一个你工具集中不容忽视的工具就是 vmstat。它允许你查看进程、CPU 和 内存使用、磁盘活动以及其它的大概信息。如果不带参数运行，vmstat 会返回自从上一次启动后的平均信息。尽管你可能以这种方式使用该命令有一段时间了，再看一些系统使用率的例子会有更多帮助，例如在例子中定义了时间间隔。例如# vmstat 5 10 会每个 5 秒返回 10 个事例：检查 Linux 系统性能正如你从上面图片看到的，vmstat 的输出分为很多列：proc(process)、memory、swap、io、system、和 CPU。每个字段的意义可以在 vmstat man 手册的 FIELD DESCRIPTION 部分找到。在哪里 vmstat 可以派上用场呢？让我们在 yum 升级之前和升级时检查系统行为：# vmstat -a 1 5 Vmstat Linux 性能监视请注意当磁盘上的文件被更改时，活跃内存的数量增加，写到磁盘的块数目（bo）和属于用户进程的 CPU 时间（us）也是这样。或者直接保存一个大文件到磁盘时（由 dsync 标志引发）：# vmstat -a 1 5 # dd if=/dev/zero of=dummy.out bs=1M count=1000 oflag=dsync Vmstat Linux 磁盘性能监视在这个例子中，我们可以看到大量的块被写入到磁盘（bo），这正如预期的那样，同时 CPU 处理任务之前等待 IO 操作完成的时间（wa）也增加了。别错过: Vmstat – Linux 性能监视其它 Linux 工具正如本文介绍部分提到的，这里有其它的工具你可以用来检测系统状态和利用率（不仅红帽，其它主流发行版的官方支持库中也提供了这些工具）。sysstat 软件包包含以下工具：sar （收集、报告、或者保存系统活动信息）。sadf （以多种方式显示 sar 收集的数据）。mpstat （报告处理器相关的统计信息）。iostat （报告 CPU 统计信息和设备以及分区的 IO统计信息）。pidstat （报告 Linux 任务统计信息）。nfsiostat （报告 NFS 的输出/输出统计信息）。cifsiostat （报告 CIFS 统计信息）sa1 （收集并保存二进制数据到系统活动每日数据文件中）。sa2 （在 /var/log/sa 目录写入每日报告）。dstat 比这些工具所提供的功能更多一些，并且提供了更多的计数器和更大的灵活性。你可以通过运行 yum info sysstat 或者 yum info dstat 找到每个工具完整的介绍，或者安装完成后分别查看每个工具的 man 手册。安装两个软件包：# yum update && yum install sysstat dstat sysstat 主要的配置文件是 /etc/sysconfig/sysstat。你可以在该文件中找到下面的参数：# How long to keep log files (in …

RHCE 系列（二）：如何进行包过滤、网络地址转换和设置内核运行时参数
type: item
date: 2015-10-23T18:24:00+08:00
description: 正如第一部分（“设置静态网络路由”）提到的，在这篇文章（RHCE 系列第二部分），我们首先介绍红帽企业版 Linux 7（RHEL）中包过滤和网络地址转换（NAT）的原理，然后再介绍在某些条件发生变化或者需要变动时设置运行时内核参数以改变运行时内核行为。RHCE 第二部分：网络包过滤RHEL 7 中的网络包过滤当我们讨论数据包过滤的时候，我们指防火墙读取每个试图通过它的数据包的包头所进行的处理。然后，根据系统管理员之前定义的规则，通过采取所要求的动作过滤数据包。正如你可能知道的，从 RHEL 7 开始，管理防火墙的默认服务是 firewalld。类似 iptables，它和 Linux 内核的 netfilter 模块交互以便检查和操作网络数据包。但不像 iptables，Firewalld 的更新可以立即生效，而不用中断活跃的连接 - 你甚至不需要重启服务。Firewalld 的另一个优势是它允许我们定义基于预配置服务名称的规则（之后会详细介绍）。在第一部分，我们用了下面的场景：静态路由网络示意图然而，你应该记得，由于还没有介绍包过滤，为了简化例子，我们停用了2号路由器的防火墙。现在让我们来看看如何使接收的数据包发送到目的地的特定服务或端口。首先，让我们添加一条永久规则允许从 enp0s3 (192.168.0.19) 到 enp0s8 (10.0.0.18) 的入站流量：# firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i enp0s3 -o enp0s8 -j ACCEPT 上面的命令会把规则保存到 /etc/firewalld/direct.xml 中：# cat /etc/firewalld/direct.xml 检查 Firewalld 保存的规则然后启用规则使其立即生效：# firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i enp0s3 -o enp0s8 -j ACCEPT 现在你可以从 RHEL 7 中通过 telnet 到 web 服务器并再次运行 tcpdump 监视两台机器之间的 TCP 流量，这次2号路由器已经启用了防火墙。# telnet 10.0.0.20 80 # tcpdump -qnnvvv -i enp0s3 host 10.0.0.20 如果你想只允许从 192.168.0.18 到 web 服务器（80 号端口）的连接而阻塞 192.168.0.0/24 网络中的其它来源呢？在 web 服务器的防火墙中添加以下规则：# firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.18/24" service name="http" accept' # firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.18/24" service name="http" accept' --permanent # firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" drop' # firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" drop' --permanent 现在你可以从 192.168.0.18 和 192.168.0.0/24 中的其它机器发送到 web 服务器的 HTTP 请求。第一种情况连接会成功完成，但第二种情况最终会超时。任何下面的命令可以验证这个结果：# telnet 10.0.0.20 80 # wget 10.0.0.20 我强烈建议你看看 Fedora Project Wiki 中的 Firewalld Rich Language 文档更详细地了解关于富规则的内容。RHEL 7 中的网络地址转换（NAT）网络地址转换（NAT）是为专用网络中的一组计算机（也可能是其中的一台）分配一个独立的公共 IP 地址的过程。这样，在内部网络中仍然可以用它们自己的私有 IP 地址来区别，但外部“看来”它们是一样的。另外，网络地址转换使得内部网络中的计算机发送请求到外部资源（例如因特网），然后只有源系统能接收到对应的响应成为可能。现在让我们考虑下面的场景：网络…

RHCE 系列（一）：如何设置和测试静态网络路由
type: item
date: 2015-10-22T20:37:00+08:00
description: RHCE（Red Hat Certified Engineer，红帽认证工程师）是红帽公司的一个认证，红帽向企业社区贡献开源操作系统和软件，同时它还给公司提供训练、支持和咨询服务。RHCE 考试准备指南这个 RHCE 是一个绩效考试（代号 EX300），面向那些拥有更多的技能、知识和能力的红帽企业版 Linux（RHEL）系统高级系统管理员。重要： 获得RHCE 认证前需要先有 红帽认证系统管理员认证 （ Red Hat Certified System Administrator，RHCSA ） 。以下是基于红帽企业版 Linux 7 考试的考试目标，我们会在该 RHCE 系列中分别介绍：第一部分：如何在 RHEL 7 中设置和测试静态路由第二部分：如何进行包过滤、网络地址转换和设置内核运行时参数第三部分：如何使用 Linux 工具集产生和发送系统活动报告第四部分：使用 Shell 脚本进行自动化系统维护第五部分：如何在 RHEL 7 中管理系统日志（配置、轮换和导入到数据库）第六部分：设置 Samba 服务器并配置 FirewallD 和 SELinux 支持客户端文件共享第七部分：设置 NFS 服务器及基于 Kerberos 认证的客户端第八部分：在 Apache 上使用网络安全服务（NSS）通过 TLS 提供 HTTPS 服务第九部分：如何使用无客户端配置来设置 Postfix 邮件服务器（SMTP）第十部分：在 RHEL/CentOS 7 中设置网络时间协议（NTP）服务器第十一部分：如何配置一个只缓存的 DNS 服务器在你的国家查看考试费用和注册考试，可以到 RHCE 认证 网页。在 RHCE 的第一和第二部分，我们会介绍一些基本的但典型的情形，也就是静态路由原理、包过滤和网络地址转换。RHCE 系列第一部分：设置和测试网络静态路由请注意我们不会作深入的介绍，但以这种方式组织内容能帮助你开始第一步并继续后面的内容。红帽企业版 Linux 7 中的静态路由现代网络的一个奇迹就是有很多可用设备能将一组计算机连接起来，不管是在一个房间里少量的机器还是在一栋建筑物、城市、国家或者大洲之间的多台机器。然而，为了能在任意情形下有效的实现这些，需要对网络包进行路由，或者换句话说，它们从源到目的地的路径需要按照某种规则。静态路由是为网络包指定一个路由的过程，而不是使用网络设备提供的默认网关。除非另有指定静态路由，网络包会被导向默认网关；而静态路由则基于预定义标准所定义的其它路径，例如数据包目的地。我们在该篇指南中会考虑以下场景。我们有一台 RHEL 7，连接到 1号路由器 [192.168.0.1] 以访问因特网以及 192.168.0.0/24 中的其它机器。第二个路由器（2号路由器）有两个网卡：enp0s3 同样连接到路由器1号以访问互联网，及与 RHEL 7 和同一网络中的其它机器通讯，另外一个网卡（enp0s8）用于授权访问内部服务所在的 10.0.0.0/24 网络，例如 web 或数据库服务器。该场景可以用下面的示意图表示：静态路由网络示意图在这篇文章中我们会集中介绍在 RHEL 7 中设置路由表，确保它能通过1号路由器访问因特网以及通过2号路由器访问内部网络。在 RHEL 7 中，你可以通过命令行用 ip 命令 配置和显示设备和路由。这些更改能在运行的系统中及时生效，但由于重启后不会保存，我们会使用 /etc/sysconfig/network-scripts 目录下的 ifcfg-enp0sX 和 route-enp0sX 文件永久保存我们的配置。首先，让我们打印出当前的路由表：# ip route show 检查当前路由表从上面的输出中，我们可以得出以下结论：默认网关的 IP 是 192.168.0.1，可以通过网卡 enp0s3 访问。系统启动的时候，它启用了到 169.254.0.0/16 的 zeroconf 路由（只是在本例中）。也就是说，如果机器设置通过 DHCP 获取 IP 地址，但是由于某些原因失败了，它就会在上述网段中自动分配到一个地址。这一行的意思是，该路由会允许我们通过 enp0s3 和其它没有从 DHCP 服务器中成功获得 IP 地址的机器机器相连接。最后，但同样重要的是，我们也可以通过 IP 地址是 192.168.0.18 的 enp0s3 与 192.168.0.0/24 网络中的其它机器连接。下面是这样的配置中你需要做的一些典型任务。除非另有说明，下面的任务都在2号路由器上进行。确保正确安装了所有网卡：# ip link show 如果有某块网卡停用了，启动它：# ip link set dev enp0s8 up 分配 10.0.0.0/24 网络中的一个 IP 地址给它：# ip…

12 个全球认可的 Linux 认证
type: item
date: 2015-07-01T00:33:00+08:00
description: 大家好，今天我们将会认识一些非常有价值的全球认可的Linux认证。Linux认证是不同的Linux专业机构在全球范围内进行的认证程序。Linux认证可以让Linux专业人才可以在服务器领域或者相关公司等等这些地方更容易获得Linux相关的工作。Linux认证评估一个人在Linux的各个领域里的专业程度。有很多不错的Linux专业机构提供不同的Linux认证。但是，在公司谋取一份工作时全球仅有少数被非常认可的Linux认证含金量很高，这些工作包括管理服务器，虚拟化，安装系统与软件，配置程序，应用支持和其他Linux操作系统相关的东西。随着全球使用Linux操作系统的服务器的增长，拉动了对于Linux专业人才的需求。为了更好的证明Linux专业技术水平，在全球看来，更好的、著名的认证总是有着更高的优先级。这里是一些全球认可的Linux认证，我们接下来将会一一谈到。1. CompTIA Linxu+CompTIA Linux+ 是LPI（Linux Professional Institute，Linux专业委员会）主办的一个Linux认证，在全世界范围内提供培训。其提供的Linux相关知识，可以用于从事一大批Linux相关专业的工作，如Linux管理员、高级网络管理员、系统管理员、Linux数据库管理员和Web管理员。如果任何人想从事安装和维护Linux操作系统，该课程会帮助他达到认证要求，并且通过提供对Linux系统更宽阔的认识，能够为通过考试做好准备。LPI的CompTIA Linux+认证的主要目的就是，提供给证书持有者足够扎实的，关于安装软件、操作、管理和设备排障的知识。我们可以付出一定的费用、时间和努力，完成CompTIA Linux+，同时获得三个业内认可的证书：LPI LPIC-1和SUSE Certified Linux Administrator （CLA）证书。认证代码 : LX0-103，LX0-104（2015年3月30日启动）或者LX0-101，LX0-102题目数量：每次考试60道题题目类型：多选考试时长：90分钟要求：A+，Network+，并且有至少12个月的Linux管理经验分数线：500 （对于200-800的范围来说）语言：英语，将来会有德语，葡萄牙语，繁体中文，西班牙。有效期：认证后三年有效注意：不同系列的考试不能合并。如果你考的是LX0-101，那么你必须考LX0-102完成认证。同样的，LX0-103和LX0-104又是一个系列。LX0-103和LX0-104系列是LX0-101和LX0-102系列的升级版。2. LPICLPIC，全称Linux专业委员会认证（ Linux Professional Institute Certification），是Linux专业委员会的一个Linux认证程序。这是一个多级别的认证程序，要求在每个级别通过一系列（通常是两个）的认证考试。该认证有三个级别，包括初级水平认证 LPIC-1 ，高级水平认证 LPIC-2和最高水平认证 LPIC-3。前两个认证侧重于 Linux系统管理，而最后一个认证侧重一些专业技能，包括虚拟化和安全。为了得到 LPIC-3 认证，一个持有有效的 LPIC-1 与LPIC-2 认证的考生必须通过300复杂环境测试、303安全测试、304虚拟化测试和高可用性测试中的一个。LPIC-1认证按照证书持有者可以通过运行Linux，使用命令行界面和基本的网络知识安装，维护，配置等任务而设计，LPIC-2测试考生是否作为管理中小型混合网络的候选人。LPIC-3认证是为企业级Linux专业技能设计所设计，代表了最高的专业水平和不针对特定 Linux 发行版的行业认证。认证代码：LPIC-1（101和102），LPIC-2（201和202）和LPIC-3（300，303或者304）题目类型：60个多项选择考试时长：90分钟要求：无，建议有 Linux Essentials 认证分数线：500（在200-800的范围内）语言：LPIC-1：英语，德语，意大利语，葡萄牙语，西班牙语（现代），汉语（简体），汉语（繁体），日语LPIC-2：英语，德语，葡萄牙语，日语LPIC-3：英语，日语有效期：退休之后五年内仍然有效3.Oracle Linux OCAOracle联合认证（OCA）为个人而定制，适用于那些想证明其部署和管理Oracle Linux操作系统的知识牢固的人。该认证专业知识仅仅针对Oracle Linux发行版，这个系统完全是为Oracle产品特别剪裁的，可以运行Oracle设计的系统，包括Oracle Exadata数据库服务器，Oracle Exalytics In-Memory 服务器，Oracle Exalogic 均衡云，和Or…