如何将Apache从2.2.3升级到2.2.21


9

使用YUM,我安装了apache。安装的apache版本是2.2.3

我们的安全人员希望我们使用2.2.21 Apache

当我尝试yum update'httpd'时,没有任何反应-没有标记为Update的软件包

我检查了Apache主页(http://www.apache.org/dist/httpd/patches/)有关补丁的信息。根据他们的书面指示,我尝试安装2.2.4补丁(http://www.apache.org/dist/httpd/patches/apply_to_2.2.4/

patch -s < /usr/local/src/hack-msvc8-httpd-2.2.4.patch

我得到这样的消息:

The text leading up to this was:

|###
|### A trivial hack to copy the .manifest files along with the binaries
|### when building from the command line on Visual Studio 2005
|###
|### Courtesy of Gustavo Lopes
|### Posted to dev@httpd.apache.org,
|### Message-ID: <006901c731ae$97bec180$0201a8c0@cataphract>
|###
|--- Makefile.win.orig 2006-12-07 11:09:37.000000000 -0600
|+++ Makefile.win 2007-01-08 23:55:56.000000000 -0600
File to patch:

我做错了什么?为什么我不能将Apatche更新到2.2.21版本?


1
不要做。见下文。
尼尔斯

Answers:


16

为了运行2.2.x,您可能需要获取另一个RPM-或从源代码构建它。

但是我会怀疑,因为您正在运行2.2.3,所以您正在运行RedHat Enterprise Linux 5或其衍生版本(CentOS 5等)。您会发现,相当多的渗透测试公司或安全管理人员没有考虑到在运行2.2.3时,实际上已经从Apache的更高版本中获得了安全修复程序。

这就是所谓的“反向移植”。RedHat 在这里有很好的描述。我建议您向安全人员请求他们感兴趣的特定CVE,以确保对其进行修补,然后使用 redhat工具来确定这些CVE 是否在您运行的apache版本中已修复。您可以通过执行来获得版本号rpm -qa httpd


良好的集体信息
Mughil 2011年

8

我假设您有RHEL5(或等效版本)。

您可以告诉安全人员,红帽将相关的安全更新从2.2.21应用于其2.2.3软件包,但不会更改基本版本号。它将(如果您仅按软件包的版本号进行查找)看起来就像在运行旧版Apache,但实际上它的安全性与2.2.21一样。这就是长期存在的企业发行版的意义所在:您可以获得一致性和修复程序。

您可以通过运行以下命令来验证这一点:

rpm -q --changelog httpd

例如,您将在变更日志中看到此最新修复程序:

* Thu Oct 06 2011 Joe Orton <jorton@redhat.com> - 2.2.3-53.3
- add security fix for CVE-2011-3368 (#743903)
- fix regressions in byterange handling (#736593)

如果确实需要安装2.2.21,则可以自己编译。这将带来严重的安全隐患:如果下周有人发现并修复了Apache的新问题,Red Hat将向后移植该修复并使它通过yum可用,但是您自己构建的Apache将无法修复该问题,您您将不得不再次完成整个过程,以构建和安装新的Apache。


好的,那我不需要安装2.2.21。我将尝试他们在当前的Apache安装中包括所有安全修复程序。 [root@ww013886 src]# rpm -qa httpd httpd-2.2.3-53.el5.centos.3 [root@ww013886 src]# rpm -q --changelog httpd * Fri Oct 21 2011 Johnny Hughes <johnny@centos.org> - 2.2.3-53.3.el5.centos - Roll in CentOS Branding * Fri Oct 07 2011 Joe Orton <jorton@redhat.com> - 2.2.3-53.3 - add security fix for CVE-2011-3368 (#743903) - fix regressions in byterange handling (#736593)
user1124133 2011年

1
重要的是要知道源apache发行版确实具有RPM规范文件。您可以使用它来构建Apache二进制RPM并替换CentOS附带的RPM。但是,除非确实需要,否则最好坚持使用Red Hat随附的版本,并让他们处理更新。
Rilindo 2011年

有时RH可以比下一个稳定的下载版本更快地修复CVE问题。因此,如果您想在没有手动操作的情况下修补httpd,请坚持使用发行版!
尼尔斯

如何获取我的apache服务器的更新。当我运行'rpm -qa httpd'时,它显示为'2.2.3-43',这意味着我需要更新我的Apache。那么如何手动更新apache?
Gangadhar Jannu

2

要直接从上游在Red Hat(或CentOS)上构建自定义Apache,您应该执行以下操作:

  1. 安装以下工具:“ yum install rpm-devel rpmdevtools rpm-build”
  2. 以常规用户身份运行rpmdev-setuptree。它将创建一个名为“ rpmbuild”的目录。
  3. cd到〜/ rpmbuild / SOURCE并从httpd.apache.org将Apache源tarball下载到该目录。
  4. 从该压缩包中提取文件“ httpd.spec”,并将其复制到〜/ rpmbuild / SPECS
  5. 运行“ rpmbuild -bb httpd.spec”,它将开始编译并构建rpm。如果缺少任何依赖项,它将停止并告诉您。那时,通过yum安装这些软件包,然后再次重新开始构建过程(您可以通过查看.spec文件中的BuildPrereq行来避免这种情况)。否则,假设没有其他问题,您将能够编译自己的Apache版本。*

或者保存您自己的工作,让Red Hat处理更新。我不建议您这样做,除非特别需要上游构建无法完全满足供应商构建

*注意:在Red Hat 6下,不再支持distcache,因此您需要从.spec文件中删除“ --enable-distcache”。


1

您尝试应用的修补程序是使用Microsoft Visual Studio构建的。线索在补丁标题中:

### A trivial hack to copy the .manifest files along with the binaries
### when building from the command line on Visual Studio 2005

这实际上并没有将Apache源代码树修补到2.2.4。但是您实际上是在尝试将其应用于SRPM吗?

正如cjc提到的那样,红帽backport安全性修复了它们发布的任何版本,但是版本号并不一定会受到影响。同样,您始终可以自己编译Apache。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.