2015年12月

fail2ban 是一款用于保护你的服务器免于暴力攻击的入侵保护软件。fail2ban 用 python 写成,并广泛用于很多服务器上。fail2ban 会扫描日志文件和 IP 黑名单来显示恶意软件、过多的密码失败尝试、web 服务器利用、wordpress 插件攻击和其他漏洞。如果你已经安装并使用了 fail2ban 来保护你的 web 服务器,你也许会想知道如何在 CentOS 6、CentOS 7、RHEL 6、RHEL 7 和 Oracle Linux 6/7 中找到被 fail2ban 阻止的 IP,或者你想将 ip 从 fail2ban 监狱中移除。

如何列出被禁止的 IP

要查看所有被禁止的 ip 地址,运行下面的命令:

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
f2b-AccessForbidden  tcp  --  anywhere             anywhere            tcp dpt:http
f2b-WPLogin  tcp  --  anywhere             anywhere            tcp dpt:http
f2b-ConnLimit  tcp  --  anywhere             anywhere            tcp dpt:http
f2b-ReqLimit  tcp  --  anywhere             anywhere            tcp dpt:http
f2b-NoAuthFailures  tcp  --  anywhere             anywhere            tcp dpt:http
f2b-SSH    tcp  --  anywhere             anywhere            tcp dpt:ssh
f2b-php-url-open  tcp  --  anywhere             anywhere            tcp dpt:http
f2b-nginx-http-auth  tcp  --  anywhere             anywhere            multiport dports http,https
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:EtherNet/IP-1
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:http
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination


Chain f2b-NoAuthFailures (1 references)
target     prot opt source               destination
REJECT     all  --  64.68.50.128         anywhere            reject-with icmp-port-unreachable
REJECT     all  --  104.194.26.205       anywhere            reject-with icmp-port-unreachable
RETURN     all  --  anywhere             anywhere

如何从 Fail2ban 中移除 IP

# iptables -D f2b-NoAuthFailures -s banned_ip -j REJECT

我希望这篇教程可以给你在 CentOS 6、CentOS 7、RHEL 6、RHEL 7 和 Oracle Linux 6/7 中移除被禁止的 ip 一些指导。


via: http://www.ehowstuff.com/how-to-remove-banned-ip-from-fail2ban-on-centos/

作者:skytech 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

网络时间协议 - NTP - 是运行在传输层 123 号端口的 UDP 协议,它允许计算机通过网络同步准确时间。随着时间的流逝,计算机内部时间会出现漂移,这会导致时间不一致问题,尤其是对于服务器和客户端日志文件,或者你想要复制服务器的资源或数据库。

在 CentOS 上安装 NTP 服务器

在 CentOS 和 RHEL 7 上安装 NTP 服务器

前置要求:

额外要求:

这篇指南会告诉你如何在 CentOS/RHCE 7 上安装和配置 NTP 服务器,并使用 NTP 公共时间服务器池 ( NTP Public Pool Time Servers ) 列表中和你服务器地理位置最近的可用节点中同步时间。

步骤一:安装和配置 NTP 守护进程

1、 官方 CentOS /RHEL 7 库默认提供 NTP 服务器安装包,可以通过使用下面的命令安装。

# yum install ntp

在 CentOS 上安装 NTP 服务器

安装 NTP 服务器

2、 安装完服务器之后,首先到官方 NTP 公共时间服务器池 ( NTP Public Pool Time Servers ) ,选择你服务器物理位置所在的洲,然后搜索你的国家位置,然后会出现 NTP 服务器列表。

NTP 服务器池

NTP 服务器池

3、 然后打开编辑 NTP 守护进程的主配置文件,注释掉来自 pool.ntp.org 项目的公共服务器默认列表,并用类似下面截图中提供给你所在国家的列表替换。(LCTT 译注:中国使用 0.cn.pool.ntp.org 等)

在 CentOS 中配置 NTP 服务器

配置 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

在 CentOS 中启用 NTP 日志

启用 NTP 日志

6、 在你编辑完所有上面解释的配置并保存关闭 ntp.conf 文件后,你最终的配置看起来像下面的截图。

CentOS 中 NTP 服务器的配置

NTP 服务器配置

步骤二:添加防火墙规则并启动 NTP 守护进程

7、 NTP 服务使用 OSI 传输层(第四层)的 123 号 UDP 端口。它是为了避免可变延迟的影响所特别设计的。要在 RHEL/CentOS 7 中开放这个端口,可以对 Firewalld 服务使用下面的命令。

# firewall-cmd --add-service=ntp --permanent
# firewall-cmd --reload

在 Firewall 中开放 NTP 端口

在 Firewall 中开放 NTP 端口

8、 你在防火墙中开放了 123 号端口之后,启动 NTP 服务器并确保系统范围内可用。用下面的命令管理服务。

# systemctl start ntpd
# systemctl enable ntpd
# systemctl status ntpd

启动 NTP 服务

启动 NTP 服务

步骤三:验证服务器时间同步

9、 启动了 NTP 守护进程后,用几分钟等服务器和它的服务器池列表同步时间,然后运行下面的命令验证 NTP 节点同步状态和你的系统时间。

# ntpq -p
# date -R

验证 NTP 服务器时间

验证 NTP 时间同步

10、 如果你想查询或者和你选择的服务器池同步,你可以使用 ntpdate 命令,后面跟服务器名或服务器地址,类似下面建议的命令行示例。

# ntpdate -q  0.ro.pool.ntp.org  1.ro.pool.ntp.org

同步 NTP 同步

同步 NTP 时间

步骤四:设置 Windows NTP 客户端

11、 如果你的 windows 机器不是域名控制器的一部分,你可以配置 Windows 和你的 NTP服务器同步时间。在任务栏右边 -> 时间 -> 更改日期和时间设置 -> 网络时间标签 -> 更改设置 -> 和一个网络时间服务器检查同步 -> 在 Server 空格输入服务器 IP 或 FQDN -> 马上更新 -> OK。

和 NTP 同步 Windows 时间

和 NTP 同步 Windows 时间

就是这些。在你的网络中配置一个本地 NTP 服务器能确保你所有的服务器和客户端有相同的时间设置,以防出现网络连接失败,并且它们彼此都相互同步。


via: http://www.tecmint.com/install-ntp-server-in-centos/

作者:Matei Cezar 译者:ictlyh 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

基于 Ubuntu 的发行版 Linux Mint 发布了 18.3 “Sylvia”,它是一个长期支持版,将一直支持到2021年。

简介

Linux Mint 是一种基于 Ubuntu 或 Debian 开发出的 Linux 操作系统。由 Linux Mint Team 团队于 2006 年开始发行。Linux Mint 的目标是为家庭用户和企业客户提供一个免费、高效、易用、高雅的桌面操作系统。

Linux Mint 是目前 Distrowatch 排行榜上第一名的 Linux 发行版。

他继承了 Ubuntu 的众多优点,同时也在 Ubuntu 的基础上加入很多自己优秀的特性。Linux Mint 致力于提供一种更开箱即刻可用的用户体验,免去用户要安装系统后还要自己安装一系列满足基本使用需求的软件。它包括提供浏览器插件、多媒体编解码器、对 DVD 播放的支持、Java 和其他组件。它也增加了一套定制桌面及各种菜单,一些独特的配置工具,以及一份基于web的软件包安装界面。

官方网站: http://www.linuxmint.com/

下载

Cinnamon 桌面

MATE 桌面

  • Intel & AMD,适用于 32-bit 位 PC 点此下载
  • Intel & AMD,适用于 64-bit 位 PC 点此下载
    (SHA256SUM: b41c5258c03bd8fe4ecab5f1db33f4484bd1992ec306ea4bdde25fc7d6ea2f40)

发行

为了追求易用性和良好的人机交互体验,Linux Mint 集成了可以开箱即用的大量多媒体等软件包。因此它的 Live ISO 体积超过了 ubuntu 的本地安装镜像,甚至大于 950MB。作为传统的刻盘安装方式,这样的体积对于一张 700MB 的CD来说肯定是太大了,只有使用 DVD光 盘刻录才可以。

因为基于 Ubuntu,Linux Mint 与 Ubuntu软件仓库完全兼容,采用a pt管理和.deb软件包。

从 5.0 开始,Mint 遵循每六个月发布一次新版本的制度,并且采用简化的版本计划。目前最新版本是 Linux Mint 18.3 “Sylvia”。

从18.0开始,Mint 基于 Ubuntu 长期支持版,并会在下一个长期支持版发布之前持续向后移植一些重要的应用程序,下一个长期支持版本发布后,则转为只有安全更新的模式直到支持退出。

此外有不基于 Ubuntu 而基于 Debian 的版本,称之为 LMDE (Linux Mint Debian Edition),其采用滚动更新,目前最新版本为 LMDE 2 201701(采用发布年月作为版本号)。

Linux Mint 提供 4 种官方桌面环境。

  • Cinnamon:是 Unix-like 系统下的一个用户界面。是 GNOME Shell 的一个派生版本,最初是为 Linux Mint 所开发,其提供了如同 GNOME 2 般,易于使用的拟真接口。Cinnamon 使用 Muffin,一个 GNOME 3 的窗口管理器 Mutter 的派生版本,作为自 1.2 版起的默认窗口管理器。
  • MATE:由已经停止官方维护的 GNOME 2 源代码派生而来。因为 GNOME 3 以 GNOME Shell 为基础所创建的用户界面取代传统的拟真接口。这导致了一些 Linux 社区的批评。许多用户拒绝使用新的 GNOME 接口,并要求其他开发者继续开发 GNOME 2。MATE 随 Linux Mint12 投入使用。
  • KDE
  • Xfce

当前版本

最新版本 Linux Mint 18.3 Cinnamon KDE “Sylvia” 基于 Ubuntu 16.04 开发,使用 Linux 4.4 内核、桌面环境为Cinnamon 3.2。该版本属于长期支持版本,支持服务到 2021 年。

  • 更新管理器有巨大改进,看起来更漂亮,速度更快,显示更多信息,使用更方便。
  • 驱动管理器现在不需要连接到互联网即可安装本地存储的驱动程序。
  • 登录屏幕现在支持多显示器、高分屏,背景动画占用更少的CPU。
  • 软件源的界面有一些易用性修改。
  • 重新设计的欢迎屏幕使用更少资源,启动更快。

历史

版本代号平台Code 基于APT 基于用户界面发布日期
1.0AdaMainKubuntu 6.06Kubuntu 6.06KDE2006-08-27
2.0BarbaraMainUbuntu 6.10Ubuntu 6.10GNOME2006-11-13
2.1BeaMainUbuntu 6.10Ubuntu 6.10GNOME2006-12-20
2.2BiancaMainUbuntu 6.10Ubuntu 6.10GNOME2007-02-20
LightUbuntu 6.10Ubuntu 6.10GNOME2007-03-29
KDE CEKubuntu 6.10Kubuntu 6.10KDE2007-04-20
3.0CassandraMainBianca 2.2Ubuntu 7.04GNOME2007-05-30
LightBianca 2.2Ubuntu 7.04GNOME2007-06-15
KDE CEBianca 2.2Kubuntu 7.04KDE2007-08-14
MiniKDE CEBianca 2.2Kubuntu 7.04KDE2007-08-14
Xfce CECassandra 3.0Xubuntu 7.04Xfce2007-08-07
3.1CelenaMainBianca 2.2Ubuntu 7.04GNOME2007-09-24
LightBianca 2.2Ubuntu 7.04GNOME2007-10-01
4.0DarynaMainCelena 3.1Ubuntu 7.10GNOME2007-10-15
LightCelena 3.1Ubuntu 7.10GNOME2007-10-15
KDE CECassandra 3.0Kubuntu 7.10KDE2008-03-03
5ElyssaMainDaryna 4.0Ubuntu 8.04GNOME2008-06-08
LightDaryna 4.0Ubuntu 8.04GNOME2008-06-08
x64Ubuntu 8.04Ubuntu 8.04GNOME2008-10-18
KDE CEDaryna 4.0Kubuntu 8.04KDE2008-09-15
Xfce CEDaryna 4.0Xubuntu 8.04Xfce2008-09-08
Fluxbox CEUbuntu 8.04Ubuntu 8.04Fluxbox2008-10-21
6FeliciaMainUbuntu 8.10Ubuntu 8.10GNOME2008-12-15
Universal (Light)Ubuntu 8.10Ubuntu 8.10GNOME2008-12-15
x64Ubuntu 8.10Ubuntu 8.10GNOME2009-02-06
KDE CEElyssa 5Kubuntu 8.10KDE2009-04-08
Xfce CEXubuntu 8.10Xubuntu 8.10Xfce2009-02-24
Fluxbox CEXubuntu 8.10Ubuntu 8.10Fluxbox2009-04-07
7GloriaMainUbuntu 9.04Ubuntu 9.04GNOME2009-05-26
Universal (Light)Ubuntu 9.04Ubuntu 9.04GNOME2009-05-26
x64Ubuntu 9.04Ubuntu 9.04GNOME2009-06-24
KDE CEKubuntu 9.04Kubuntu 9.04KDE2009-08-03
Xfce CEXubuntu 9.04Xubuntu 9.04Xfce2009-09-13
8HelenaMainUbuntu 9.10Ubuntu 9.10GNOME2009-11-28
Universal (Light)Ubuntu 9.10Ubuntu 9.10GNOME2009-11-28
x64Ubuntu 9.10Ubuntu 9.10GNOME2009-12-14
KDEKubuntu 9.10Kubuntu 9.10KDE2010-02-06
KDE x64Kubuntu 9.10Kubuntu 9.10KDE2010-02-12
Fluxbox CEHelena MainUbuntu 9.10Fluxbox2010-02-12
Xfce CE RC1Xubuntu 9.10Xubuntu 9.10Xfce2010-03-07
LXDE CE RC1Helena MainUbuntu 9.10LXDE2010-03-15
9IsadoraMainUbuntu 10.04Ubuntu 10.04GNOME2010-05-18
KDEUbuntu 10.04Ubuntu 10.04KDE2010-05-18
10JuliaMainUbuntu 10.10Ubuntu 10.10GNOME2010-11-18
KDEUbuntu 10.10Ubuntu 10.10KDE2010-11-18
XfceXubuntu 10.10Xubuntu 10.10Xfce
LXDEUbuntu 10.10Ubuntu 10.10LXDE2011-03-16
11KatyaMainUbuntu 11.04Ubuntu 11.04GNOME2011-05-26
12LisaMainUbuntu 11.10Ubuntu 11.10GNOME2011-11-26
KDEUbuntu 11.10Ubuntu 11.10KDE2011-12-03
LXDELubuntu 11.10Lubuntu 11.10LXDE2012-03-09
13MayaMATE 1.2GNOME 2GNOME 2GNOME2012-05-23
Cinnamon 1.4GNOME 3GNOME 3GNOME2012-05-23
MDMGDM 2.20GDM 2.20GDM2012-05-23
14NadiaMATE 1.4GNOME 2GNOME 2GNOME2012-11-20
Cinnamon 1.6GNOME 3GNOME 3GNOME2012-11-20
MDMGDM 2.20GDM 2.20GDM2012-11-20
15OliviaMATE 1.6GNOME 2GNOME 2GNOME2013-05-29
Cinnamon 1.8GNOME 3GNOME 3GNOME2013-05-29
MDM 1.2GDM 2.20GDM 2.20GDM2013-05-29
16PetraMATE 1.6GNOME 2GNOME 2GNOME2013-11-30
Cinnamon 2.0GNOME 3GNOME 3GNOME2013-11-30
MDM 1.4GDM 2.20GDM 2.20GDM2013-11-30
17QianaMATE 1.8GNOME 2??2014-05-31
Cinnamon 2.2GNOME 3??2014-05-31
KDE???2014-05-31
xfce???2014-05-31
17.1RebeccaMATE 1.8GNOME 2??2014-11-29
Cinnamon 2.4GNOME 3??2014-11-29
KDEUbuntu 14.04??2015-01-08
xfceUbuntu 14.04??2015-01-11
17.2Rafaela 2015-08-04
17.3Rosa 2016-01-06
18.0Sarah 2016-09-07
18.1Serena 2017-01-25
18.2Sonya 2017-07-02
18.3Sylvia 2017-11-27

注:部分资料来自维基百科。

尽管现在有很多在线联系方式,电子邮件仍然是一个人传递信息给远在世界尽头或办公室里坐在我们旁边的另一个人的有效方式。

下面的图描述了电子邮件从发送者发出直到信息到达接收者收件箱的传递过程。

电子邮件如何工作

电子邮件如何工作

要实现这一切,背后发生了好多事情。为了使电子邮件信息从一个客户端应用程序(例如 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 配置 Postfix

Postfix 的主要配置文件是 /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 配置 Postfix

myhostname = 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 权限

设置 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 9-RHCE series" [email protected] < mailbody.txt

测试 Postfix 邮件服务器

测试 Postfix 邮件服务器

现在到中央邮件服务器(mail.mydomain.com)以 tecmint 用户登录,并检查是否收到了邮件:

# su – tecmint
# mail

检查 Postfix 邮件服务器发送

检查 Postfix 邮件服务器发送

如果没有收到邮件,检查 root 用户的邮件池看看是否有警告或者错误提示。你也许需要使用 nmap 命令确保两台服务器运行了 SMTP 服务,并在中央邮件服务器中打开了 25 号端口:

# nmap -PN 192.168.0.20

Postfix 邮件服务器错误处理

Postfix 邮件服务器错误处理

总结

像本文中展示的设置邮件服务器和中继主机是每个系统管理员必须拥有的重要技能,也代表了理解和安装更复杂情景的基础,例如一个邮件服务器托管有多个邮件账户(甚至成百上千)的域名。

(请注意这种类型的设置需要有 DNS 服务器,这不在本文的介绍范围),但你可以参照下面的文章设置 DNS 服务器:

最后,我强烈建议你熟悉 Postfix 的配置文件(main.cf)和这个程序的帮助手册。如果有任何疑问,别犹豫,使用下面的评论框或者我们的论坛 Linuxsay.com 告诉我们吧,你会从世界各地的 Linux 高手中获得几乎是及时的帮助。


via: http://www.tecmint.com/setup-postfix-mail-server-smtp-using-null-client-on-centos/

作者:Gabriel Cánepa 译者:ictlyh 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

如果你是一个负责维护和确保 web 服务器安全的系统管理员,你需要花费最大的精力确保服务器中处理和通过的数据任何时候都受到保护。

使用 SSL/TLS 设置 Apache HTTPS

RHCE 系列:第八部分 - 使用网络安全服务(NSS)为 Apache 通过 TLS 实现 HTTPS

为了在客户端和服务器之间提供更安全的连接,作为 HTTP 和 SSL( Secure Sockets Layer ( 安全套接层 ) )或者最近称为 TLS( Transport Layer Security ( 传输层安全 ) )的组合,产生了 HTTPS 协议。

由于一些严重的安全漏洞,SSL 已经被更健壮的 TLS 替代。由于这个原因,在这篇文章中我们会解析如何通过 TLS 实现你 web 服务器和客户端之间的安全连接。

这里假设你已经安装并配置好了 Apache web 服务器。如果还没有,在进入下一步之前请阅读下面站点中的文章。

安装 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 模块

检查 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

为 NSS 数据库设置密码

为 NSS 数据库设置密码

创建一个 Apache SSL 自签名证书

下一步,我们会创建一个自签名证书来让我们的客户机可以识别服务器(请注意这个方法对于生产环境并不是最好的选择;对于生产环境你应该考虑购买第三方可信证书机构验证的证书,例如 DigiCert)。

我们用 genkey 命令为 box1 创建有效期为 365 天的 NSS 兼容证书。完成这一步后:

# genkey --nss --days 365 box1

选择 Next:

创建 Apache SSL 密钥

创建 Apache SSL 密钥

你可以使用默认的密钥大小(2048),然后再次选择 Next:

选择 Apache SSL 密钥大小

选择 Apache SSL 密钥大小

等待系统生成随机比特:

生成随机密钥比特

生成随机密钥比特

为了加快速度,会提示你在控制台输入随机字符,正如下面的截图所示。请注意当没有从键盘接收到输入时进度条是如何停止的。然后,会让你选择:

  1. 是否发送验证签名请求(CSR)到一个验证机构(CA):选择 No,因为这是一个自签名证书。
  2. 为证书输入信息。

最后,会提示你输入之前给 NSS 证书设置的密码:

# genkey --nss --days 365 box1

Apache NSS 证书密码

Apache NSS 证书密码

需要的话,你可以用以下命令列出现有的证书:

# certutil –L –d /etc/httpd/alias

列出 Apache NSS 证书

列出 Apache NSS 证书

然后通过名字删除(如果你真的需要删除的,用你自己的证书名称替换 box1):

# certutil -d /etc/httpd/alias -D -n "box1"

如果你需要继续进行的话,请继续阅读。

测试 Apache SSL HTTPS 连接

最后,是时候测试到我们服务器的安全连接了。当你用浏览器打开 https://,你会看到著名的信息 “This connection is untrusted”:

检查 Apache SSL 连接

检查 Apache SSL 连接

在上面的情况中,你可以点击 添加例外 ( Add Exception ) 然后 确认安全例外 ( Confirm Security Exception ) - 但先不要这么做。让我们首先来看看证书看它的信息是否和我们之前输入的相符(如截图所示)。

要做到这点,点击上面的 视图 ( View... ) -> 详情 ( Details ) 选项卡,当你从列表中选择发行人你应该看到这个:

确认 Apache SSL 证书详情

确认 Apache SSL 证书详情

现在你可以继续,确认例外(限于此次或永久),然后会通过 https 把你带到你 web 服务器的 DocumentRoot 目录,在这里你可以使用你浏览器自带的开发者工具检查连接详情:

在火狐浏览器中,你可以通过在屏幕中右击,然后从上下文菜单中选择 检查元素 ( Inspect Element ) 启动开发者工具,尤其要看“ 网络 ( Network ) ”选项卡:

检查 Apache HTTPS 连接

检查 Apache HTTPS 连接

请注意这和之前显示的在验证过程中输入的信息一致。还有一种方式通过使用命令行工具测试连接:

左图(测试 SSLv3):

# openssl s_client -connect localhost:443 -ssl3

右图(测试 TLS):

# openssl s_client -connect localhost:443 -tls1

测试 Apache SSL 和 TLS 连接

测试 Apache SSL 和 TLS 连接

参考上面的截图了解更详细信息。

总结

我想你已经知道,使用 HTTPS 会增加会在你站点中输入个人信息的访客的信任(从用户名和密码到任何商业/银行账户信息)。

在那种情况下,你会希望获得由可信验证机构签名的证书,正如我们之前解释的(步骤和设置需要启用例外的证书的步骤相同,发送 CSR 到 CA 然后获得返回的签名证书);否则,就像我们的例子中一样使用自签名证书即可。

要获取更多关于使用 NSS 的详情,可以参考关于 mod-nss 的在线帮助。如果你有任何疑问或评论,请告诉我们。


via: http://www.tecmint.com/create-apache-https-self-signed-certificate-using-nss/

作者:Gabriel Cánepa 译者:ictlyh 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

大家好,本教程将学习如何在 ubuntu 15.04 上面安装 puppet,它可以用来管理你的服务器基础环境。puppet 是由 puppet 实验室 ( Puppet Labs ) 开发并维护的一款开源的配置管理软件,它能够帮我们自动化供给、配置和管理服务器的基础环境。不管我们管理的是几个服务器还是数以千计的计算机组成的业务报表体系,puppet 都能够使管理员从繁琐的手动配置调整中解放出来,腾出时间和精力去提系统的升整体效率。它能够确保所有自动化流程作业的一致性、可靠性以及稳定性。它让管理员和开发者更紧密的联系在一起,使开发者更容易产出付出设计良好、简洁清晰的代码。puppet 提供了配置管理和数据中心自动化的两个解决方案。这两个解决方案分别是 puppet 开源版 和 puppet 企业版。puppet 开源版以 Apache 2.0 许可证发布,它是一个非常灵活、可定制的解决方案,设置初衷是帮助管理员去完成那些重复性操作工作。pupprt 企业版是一个全平台复杂 IT 环境下的成熟解决方案,它除了拥有开源版本所有优势以外还有移动端 apps、只有商业版才有的加强支持,以及模块化和集成管理等。Puppet 使用 SSL 证书来认证主控服务器与代理节点之间的通信。

本教程将要介绍如何在运行 ubuntu 15.04 的主控服务器和代理节点上面安装开源版的 puppet。在这里,我们用一台服务器做 主控服务器 ( master ) ,管理和控制剩余的当作 puppet 代理节点 ( agent node ) 的服务器,这些代理节点将依据主控服务器来进行配置。在 ubuntu 15.04 只需要简单的几步就能安装配置好 puppet,用它来管理我们的服务器基础环境非常的方便。(LCTT 译注:puppet 采用 C/S 架构,所以必须有至少有一台作为服务器,其他作为客户端处理)

1.设置主机文件

在本教程里,我们将使用2台运行 ubuntu 15.04 “Vivid Vervet" 的主机,一台作为主控服务器,另一台作为 puppet 的代理节点。下面是我们将用到的服务器的基础信息。

  • puupet 主控服务器 IP:44.55.88.6 ,主机名: puppetmaster
  • puppet 代理节点 IP: 45.55.86.39 ,主机名: puppetnode

我们要在代理节点和服务器这两台机器的 hosts 文件里面都添加上相应的条目,使用 root 或是 sudo 访问权限来编辑 /etc/hosts 文件,命令如下:

# nano /etc/hosts

45.55.88.6 puppetmaster.example.com puppetmaster
45.55.86.39 puppetnode.example.com puppetnode

注意,puppet 主控服务器必使用 8140 端口来运行,所以请务必保证开启8140端口。

2. 用 NTP 更新时间

puppet 代理节点所使用系统时间必须要准确,这样可以避免代理证书出现问题。如果有时间差异,那么证书将过期失效,所以服务器与代理节点的系统时间必须互相同步。我们使用 NTP( Network Time Protocol ( 网络时间协议 ) )来同步时间。在服务器与代理节点上面分别运行以下命令来同步时间。

# ntpdate pool.ntp.org

17 Jun 00:17:08 ntpdate[882]: adjust time server 66.175.209.17 offset -0.001938 sec    

(LCTT 译注:显示类似的输出结果表示运行正常)

如果没有安装 ntp,请使用下面的命令更新你的软件仓库,安装并运行ntp服务

# apt-get update && sudo apt-get -y install ntp ; service ntp restart

3. 安装主控服务器软件

安装开源版本的 puppet 有很多的方法。在本教程中我们在 puppet 实验室官网下载一个名为 puppetlabs-release 的软件包的软件源,安装后它将为我们在软件源里面添加 puppetmaster-passenger。puppetmaster-passenger 包括带有 apache 的 puppet 主控服务器。我们开始下载这个软件包:

# cd /tmp/
# wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb

--2015-06-17 00:19:26-- https://apt.puppetlabs.com/puppetlabs-release-trusty.deb
Resolving apt.puppetlabs.com (apt.puppetlabs.com)... 192.155.89.90, 2600:3c03::f03c:91ff:fedb:6b1d
Connecting to apt.puppetlabs.com (apt.puppetlabs.com)|192.155.89.90|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7384 (7.2K) [application/x-debian-package]
Saving to: ‘puppetlabs-release-trusty.deb’

puppetlabs-release-tr 100%[===========================>] 7.21K --.-KB/s in 0.06s

2015-06-17 00:19:26 (130 KB/s) - ‘puppetlabs-release-trusty.deb’ saved [7384/7384]

下载完成,我们来安装它:

# dpkg -i puppetlabs-release-trusty.deb

Selecting previously unselected package puppetlabs-release.
(Reading database ... 85899 files and directories currently installed.)
Preparing to unpack puppetlabs-release-trusty.deb ...
Unpacking puppetlabs-release (1.0-11) ...
Setting up puppetlabs-release (1.0-11) ...

使用 apt 包管理命令更新一下本地的软件源:

# apt-get update

现在我们就可以安装 puppetmaster-passenger 了

# apt-get install puppetmaster-passenger

提示: 在安装的时候可能会报错:

Warning: Setting templatedir is deprecated.see http://links.puppetlabs.com/env-settings-deprecations (at /usr/lib/ruby/vendor_ruby/puppet/settings.rb:1139:in `issue_deprecation_warning')

不过不用担心,忽略掉它就好,我们只需要在设置配置文件的时候把这一项禁用就行了。

如何来查看 puppet 主控服务器是否已经安装成功了呢?非常简单,只需要使用下面的命令查看它的版本就可以了。

# puppet --version

3.8.1

现在我们已经安装好了 puppet 主控服务器。因为我们使用的是配合 apache 的 passenger,由 apache 来控制 puppet 主控服务器,当 apache 运行时 puppet 主控服务器才运行。

在开始之前,我们需要通过停止 apache 服务来让 puppet 主控服务器停止运行。

# systemctl stop apache2

4. 使用 Apt 工具锁定主控服务器的版本

现在已经安装了 3.8.1 版的 puppet,我们锁定这个版本不让它随意升级,因为升级会造成配置文件混乱。 使用 apt 工具来锁定它,这里我们需要使用文本编辑器来创建一个新的文件 /etc/apt/preferences.d/00-puppet.pref:

# nano /etc/apt/preferences.d/00-puppet.pref

在新创建的文件里面添加以下内容:

# /etc/apt/preferences.d/00-puppet.pref
Package: puppet puppet-common puppetmaster-passenger
Pin: version 3.8*
Pin-Priority: 501

这样在以后的系统软件升级中, puppet 主控服务器将不会跟随系统软件一起升级。

5. 配置 Puppet 主控服务器

Puppet 主控服务器作为一个证书发行机构,需要生成它自己的证书,用于签署所有代理的证书的请求。首先我们要删除所有在该软件包安装过程中创建出来的 ssl 证书。本地默认的 puppet 证书放在 /var/lib/puppet/ssl。因此我们只需要使用 rm 命令来整个移除这些证书就可以了。

# rm -rf /var/lib/puppet/ssl

现在来配置该证书,在创建 puppet 主控服务器证书时,我们需要包括代理节点与主控服务器沟通所用的每个 DNS 名称。使用文本编辑器来修改服务器的配置文件 puppet.conf:

# nano /etc/puppet/puppet.conf

输出的结果像下面这样

[main]
logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/var/run/puppet
factpath=$vardir/lib/facter
templatedir=$confdir/templates

[master]
# These are needed when the puppetmaster is run by passenger
# and can safely be removed if webrick is used.
ssl_client_header = SSL_CLIENT_S_DN
ssl_client_verify_header = SSL_CLIENT_VERIFY

在这我们需要注释掉 templatedir 这行使它失效。然后在文件的 [main] 小节的结尾添加下面的信息。

server = puppetmaster
environment = production
runinterval = 1h
strict_variables = true
certname = puppetmaster
dns_alt_names = puppetmaster, puppetmaster.example.com

还有很多你可能用的到的配置选项。 如果你有需要,在 Puppet 实验室有一份详细的描述文件供你阅读: Main Config File (puppet.conf)。

编辑完成后保存退出。

使用下面的命令来生成一个新的证书。

# puppet master --verbose --no-daemonize

Info: Creating a new SSL key for ca
Info: Creating a new SSL certificate request for ca
Info: Certificate Request fingerprint (SHA256): F6:2F:69:89:BA:A5:5E:FF:7F:94:15:6B:A7:C4:20:CE:23:C7:E3:C9:63:53:E0:F2:76:D7:2E:E0:BF:BD:A6:78
...
Notice: puppetmaster has a waiting certificate request
Notice: Signed certificate request for puppetmaster
Notice: Removing file Puppet::SSL::CertificateRequest puppetmaster at '/var/lib/puppet/ssl/ca/requests/puppetmaster.pem'
Notice: Removing file Puppet::SSL::CertificateRequest puppetmaster at '/var/lib/puppet/ssl/certificate_requests/puppetmaster.pem'
Notice: Starting Puppet master version 3.8.1
^CNotice: Caught INT; storing stop
Notice: Processing stop

至此,证书已经生成。一旦我们看到 Notice: Starting Puppet master version 3.8.1,就表明证书就已经制作好了。我们按下 CTRL-C 回到 shell 命令行。

查看新生成证书的信息,可以使用下面的命令。

# puppet cert list -all

+ "puppetmaster" (SHA256) 33:28:97:86:A1:C3:2F:73:10:D1:FB:42:DA:D5:42:69:71:84:F0:E2:8A:01:B9:58:38:90:E4:7D:B7:25:23:EC (alt names: "DNS:puppetmaster", "DNS:puppetmaster.example.com")

6. 创建一个 Puppet 清单

默认的主 清单 ( Manifest ) 是 /etc/puppet/manifests/site.pp。 这个主要清单文件包括了用于在代理节点执行的配置定义。现在我们来创建一个清单文件:

# nano /etc/puppet/manifests/site.pp

在刚打开的文件里面添加下面这几行:

# execute 'apt-get update'
exec { 'apt-update': # exec resource named 'apt-update'
command => '/usr/bin/apt-get update' # command this resource will run
}

# install apache2 package
package { 'apache2':
require => Exec['apt-update'], # require 'apt-update' before installing
ensure => installed,
}

# ensure apache2 service is running
service { 'apache2':
ensure => running,
}

以上这几行的意思是给代理节点部署 apache web 服务。

7. 运行 puppet 主控服务

已经准备好运行 puppet 主控服务器 了,那么开启 apache 服务来让它启动

# systemctl start apache2

我们 puppet 主控服务器已经运行,不过它还不能管理任何代理节点。现在我们给 puppet 主控服务器添加代理节点.

提示: 如果报错

Job for apache2.service failed. see "systemctl status apache2.service" and "journalctl -xe" for details.

肯定是 apache 服务器有一些问题,我们可以使用 root 或是 sudo 访问权限来运行 apachectl start查看它输出的日志。在本教程执行过程中, 我们发现一个 /etc/apache2/sites-enabled/puppetmaster.conf 的证书配置问题。修改其中的 SSLCertificateFile /var/lib/puppet/ssl/certs/server.pem 为 SSLCertificateFile /var/lib/puppet/ssl/certs/puppetmaster.pem,然后注释掉后面这行 SSLCertificateKeyFile 。然后在命令行重新启动 apache。

8. 安装 Puppet 代理节点的软件包

我们已经准备好了 puppet 的服务器,现在需要一个可以管理的代理节点,我们将安装 puppet 代理软件到节点上去。这里我们要给每一个需要管理的节点安装代理软件,并且确保这些节点能够通过 DNS 查询到服务器主机。下面将 安装最新的代理软件到 节点 puppetnode.example.com 上。

在代理节点上使用下面的命令下载 puppet 实验室提供的软件包:

# cd /tmp/
# wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb\

--2015-06-17 00:54:42-- https://apt.puppetlabs.com/puppetlabs-release-trusty.deb
Resolving apt.puppetlabs.com (apt.puppetlabs.com)... 192.155.89.90, 2600:3c03::f03c:91ff:fedb:6b1d
Connecting to apt.puppetlabs.com (apt.puppetlabs.com)|192.155.89.90|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7384 (7.2K) [application/x-debian-package]
Saving to: ‘puppetlabs-release-trusty.deb’

puppetlabs-release-tr 100%[===========================>] 7.21K --.-KB/s in 0.04s

2015-06-17 00:54:42 (162 KB/s) - ‘puppetlabs-release-trusty.deb’ saved [7384/7384]

在 ubuntu 15.04 上我们使用 debian 包管理系统来安装它,命令如下:

# dpkg -i puppetlabs-release-trusty.deb

使用 apt 包管理命令更新一下本地的软件源:

# apt-get update

通过远程仓库安装:

# apt-get install puppet

Puppet 代理默认是不启动的。这里我们需要使用文本编辑器修改 /etc/default/puppet 文件,使它正常工作:

# nano /etc/default/puppet

更改 START 的值改成 "yes" 。

START=yes

最后保存并退出。

9. 使用 Apt 工具锁定代理软件的版本

和上面的步骤一样为防止随意升级造成的配置文件混乱,我们要使用 apt 工具来把它锁定。具体做法是使用文本编辑器创建一个文件 /etc/apt/preferences.d/00-puppet.pref:

# nano /etc/apt/preferences.d/00-puppet.pref

在新建的文件里面加入如下内容

# /etc/apt/preferences.d/00-puppet.pref
Package: puppet puppet-common
Pin: version 3.8*
Pin-Priority: 501

这样 puppet 就不会随着系统软件升级而随意升级了。

10. 配置 puppet 代理节点

我们需要编辑一下代理节点的 puppet.conf 文件,来使它运行。

# nano /etc/puppet/puppet.conf

它看起来和服务器的配置文件完全一样。同样注释掉 templatedir这行。不同的是在这里我们需要删除掉所有关于[master] 的部分。

假定主控服务器可以通过名字“puppet-master”访问,我们的客户端应该可以和它相互连接通信。如果不行的话,我们需要使用完整的主机域名 puppetmaster.example.com

[agent]
server = puppetmaster.example.com
certname = puppetnode.example.com

在文件的结尾增加上面3行,增加之后文件内容像下面这样:

[main]
logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/var/run/puppet
factpath=$vardir/lib/facter
#templatedir=$confdir/templates

[agent]
server = puppetmaster.example.com
certname = puppetnode.example.com

最后保存并退出。

使用下面的命令来启动客户端软件:

# systemctl start puppet

如果一切顺利的话,我们不会看到命令行有任何输出。 第一次运行的时候,代理节点会生成一个 ssl 证书并且给服务器发送一个请求,经过签名确认后,两台机器就可以互相通信了。

提示: 如果这是你添加的第一个代理节点,建议你在添加其他节点前先给这个证书签名。一旦能够通过并正常运行,回过头来再添加其他代理节点。

11. 在主控服务器上对证书请求进行签名

第一次运行的时候,代理节点会生成一个 ssl 证书并且给服务器发送一个签名请求。在主控服务器给代理节点服务器证书签名之后,主服务器才能和代理服务器通信并且控制代理服务器。

在主控服务器上使用下面的命令来列出当前的证书请求:

# puppet cert list
"puppetnode.example.com" (SHA256) 31:A1:7E:23:6B:CD:7B:7D:83:98:33:8B:21:01:A6:C4:01:D5:53:3D:A0:0E:77:9A:77:AE:8F:05:4A:9A:50:B2

因为只设置了一台代理节点服务器,所以我们将只看到一个请求。看起来类似如上,代理节点的完整域名即其主机名。

注意有没有“+”号在前面,代表这个证书有没有被签名。

使用带有主机名的 puppet cert sign这个命令来签署这个签名请求,如下:

# puppet cert sign puppetnode.example.com
Notice: Signed certificate request for puppetnode.example.com
Notice: Removing file Puppet::SSL::CertificateRequest puppetnode.example.com at '/var/lib/puppet/ssl/ca/requests/puppetnode.example.com.pem'

主控服务器现在可以通讯和控制它签名过的代理节点了。

如果想签署所有的当前请求,可以使用 -all 选项,如下所示:

# puppet cert sign --all

12. 删除一个 Puppet 证书

如果我们想移除一个主机,或者想重建一个主机然后再添加它。下面的例子里我们将展示如何删除 puppet 主控服务器上面的一个证书。使用的命令如下:

# puppet cert clean hostname
Notice: Revoked certificate with serial 5
Notice: Removing file Puppet::SSL::Certificate puppetnode.example.com at '/var/lib/puppet/ssl/ca/signed/puppetnode.example.com.pem'
Notice: Removing file Puppet::SSL::Certificate puppetnode.example.com at '/var/lib/puppet/ssl/certs/puppetnode.example.com.pem'

如果我们想查看所有的签署和未签署的请求,使用下面这条命令:

# puppet cert list --all
+ "puppetmaster" (SHA256) 33:28:97:86:A1:C3:2F:73:10:D1:FB:42:DA:D5:42:69:71:84:F0:E2:8A:01:B9:58:38:90:E4:7D:B7:25:23:EC (alt names: "DNS:puppetmaster", "DNS:puppetmaster.example.com") 

13. 部署 Puppet 清单

当配置并完成 puppet 清单后,现在我们需要部署清单到代理节点服务器上。要应用并加载主 puppet 清单,我们可以在代理节点服务器上面使用下面的命令:

# puppet agent --test

Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for puppetnode.example.com
Info: Applying configuration version '1434563858'
Notice: /Stage[main]/Main/Exec[apt-update]/returns: executed successfully
Notice: Finished catalog run in 10.53 seconds

这里向我们展示了主清单如何立即影响到了一个单一的服务器。

如果我们打算运行的 puppet 清单与主清单没有什么关联,我们可以简单使用 puppet apply 带上相应的清单文件的路径即可。它仅将清单应用到我们运行该清单的代理节点上。

# puppet apply /etc/puppet/manifest/test.pp

14. 为特定节点配置清单

如果我们想部署一个清单到某个特定的节点,我们需要如下配置清单。

在主控服务器上面使用文本编辑器编辑 /etc/puppet/manifest/site.pp:

# nano /etc/puppet/manifest/site.pp

添加下面的内容进去

node 'puppetnode', 'puppetnode1' {
# execute 'apt-get update'
exec { 'apt-update': # exec resource named 'apt-update'
command => '/usr/bin/apt-get update' # command this resource will run
}

# install apache2 package
package { 'apache2':
require => Exec['apt-update'], # require 'apt-update' before installing
ensure => installed,
}

# ensure apache2 service is running
service { 'apache2':
ensure => running,
}
}

这里的配置显示我们将在名为 puppetnode 和 puppetnode1 的2个指定的节点上面安装 apache 服务。这里可以添加其他我们需要安装部署的具体节点进去。

15. 配置清单模块

模块对于组合任务是非常有用的,在 Puppet 社区有很多人贡献了自己的模块组件。

在主控服务器上, 我们将使用 puppet module 命令来安装 puppetlabs-apache 模块。

# puppet module install puppetlabs-apache

警告: 千万不要在一个已经部署 apache 环境的机器上面使用这个模块,否则它将清空你没有被 puppet 管理的 apache 配置。

现在用文本编辑器来修改 site.pp :

# nano /etc/puppet/manifest/site.pp

添加下面的内容进去,在 puppetnode 上面安装 apache 服务。

node 'puppet-node' {
class { 'apache': } # use apache module
apache::vhost { 'example.com': # define vhost resource
port => '80',
docroot => '/var/www/html'
}
}

保存退出。然后重新运行该清单来为我们的代理节点部署 apache 配置。

总结

现在我们已经成功的在 ubuntu 15.04 上面部署并运行 puppet 来管理代理节点服务器的基础运行环境。我们学习了 puppet 是如何工作的,编写清单文件,节点与主机间使用 ssl 证书认证的认证过程。使用 puppet 开源软件配置管理工具在众多的代理节点上来控制、管理和配置重复性任务是非常容易的。如果你有任何的问题,建议,反馈,与我们取得联系,我们将第一时间完善更新,谢谢。


via: http://linoxide.com/linux-how-to/install-puppet-ubuntu-15-04/

作者:Arun Pyasi 译者:ivo-wang 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出