centos源码编译升级ntp4.2.8p15

修复NTPCVE-2013-5211漏洞的升级指南
文章详细描述了如何升级NTP来解决CVE-2013-5211远程拒绝服务漏洞,包括备份配置文件,卸载旧版本,安装新版本,配置还原以及启动服务的过程。还提到了在升级过程中可能遇到的缺少gcc和libcap-devel的问题及其解决方案。

升级原因

解决ntp已知的漏洞问题

漏洞信息

NTP 'ntp_request.c’远程拒绝服务漏洞(CVE-2013-5211):NTP 4.2.7p26之前版本的ntpd中,ntp_request.c的monlist允许远程攻击者通过伪造的REQ_MON_GETLIST或REQ_MON_GETLIST_1请求,利用此漏洞造成拒绝服务(流量放大)。

升级过程

软件包准备

  • ntp-4.2.8p15.tar.gz
    下载地址:https://www.eecis.udel.edu/~ntp/ntp_spool//ntp4/ntp-4.2/

依赖包

  • libcap-devel
  • libcap
  • glic-devel

配置备份

cp -ar /etc/ntp /etc/ntp.bak`date +%Y%m%d`
cp /etc/ntp.conf /etc/ntp.conf.bak`date +%Y%m%d`
cp /etc/sysconfig/ntpd /etc/sysconfig/ntpd.bak`date +%Y%m%d`
cp /etc/sysconfig/ntpdate /etc/sysconfig/ntpdate.bak`date +%Y%m%d`
cp /usr/lib/systemd/system/ntpd.service /usr/lib/systemd/system/ntpd.service.bak
cp /usr/lib/systemd/system/ntpdate.service /usr/lib/systemd/system/ntpdate.service.bak

卸载旧版本ntp

yum remove -y ntp ntpdate

解压、编译、安装新版本

tar zxvf ntp-4.2.8p15.tar.gz
cd ntp-4.2.8p15
./configure --prefix=/usr  --bindir=/usr/sbin --sysconfdir=/etc  --enable-linuxcaps --with-lineeditlibs=readline  --enable-all-clocks --enable-parse-clocks --enable-clockctl && make
make install && install -v -o ntp -g ntp -d /var/lib/ntp

配置还原

mv /etc/ntp.bak`date +%Y%m%d` /etc/ntp 
mv /etc/ntp.conf.bak20230615 /etc/ntp.conf 
mv /etc/sysconfig/ntpd.bak`date +%Y%m%d` /etc/sysconfig/ntpd
mv /etc/sysconfig/ntpdate.bak`date +%Y%m%d` /etc/sysconfig/ntpdate
mv /usr/lib/systemd/system/ntpd.service.bak /usr/lib/systemd/system/ntpd.service
mv /usr/lib/systemd/system/ntpdate.service.bak /usr/lib/systemd/system/ntpdate.service

启动服务

systemctl daemon-reload
systemctl start ntpd

查看升级后版本

ntpd --version

升级过程中常见问题

缺少gcc编译环境

执行./configure出现以下提示,是因为系统缺少gcc编译环境,需要先安装gcc
在这里插入图片描述

/usr/bin/ld: cannot find -lcap

执行./configure出现报错:/usr/bin/ld: cannot find -lcap,是因为系统未安装libcap-devel
在这里插入图片描述

安装libcap-devel,可以使用离线rpm安装,也可以使用yum安装

yum install -y libcap-devel
<think>我们正在处理一个关于在CentOS7上升级NTP到特定版本4.2.8p15的请求,并且要求使用rpm包安装。根据提供的引用,我们可以知道:-引用[1]展示了通过源码安装ntp-4.2.8p15的步骤(tar解压、configure、make、makeinstall),但用户要求的是rpm安装。-引用[2]显示通过yum安装ntp,但安装的是4.2.6p5版本,并不是目标版本。-引用[3]提到了在Centos6上安装NTP4.2.8,但同样没有提供rpm包安装的步骤。 因此,我们需要寻找或构建适用于CentOS7的ntp-4.2.8p15的rpm包。由于官方仓库可能不提供这个特定版本,我们可能需要从第三方获取或者自己从源码构建rpm包。步骤:1.检查当前安装ntp版本:`ntpq-cversion` 2.如果已经安装了旧版本,建议先卸载:`sudoyumremove ntp ntpdate` 3.获取ntp-4.2.8p15的rpm包。我们可以尝试从第三方仓库下载,或者自己使用rpmbuild工具从源码构建rpm包。由于用户要求使用rpm包安装,我们假设用户希望直接下载rpm包安装。但是,官方仓库和常见的第三方仓库(如EPEL)可能不提供这个特定版本。因此,我们需要从源码构建rpm包。构建rpm包的步骤:a.安装构建依赖:`sudo yum groupinstall "Development Tools"`以及 `sudo yum installrpm-buildrpmdevtools`b.设置rpmbuild环境:`rpmdev-setuptree`c.下载ntp-4.2.8p15源码包(通常为.tar.gz格式)到~/rpmbuild/SOURCES目录d.下载或创建对应的spec文件(用于构建rpm包)-我们可以从ntp的官方仓库获取spec文件,或者修改旧版本的spec文件。-由于ntp-4.2.8p15是一个特定版本,我们需要确保spec文件匹配。e.使用rpmbuild构建rpm包:`rpmbuild -bb ~/rpmbuild/SPECS/ntp.spec` f.构建完成后,在~/rpmbuild/RPMS/x86_64/(根据架构)目录下会生成rpm包,然后安装:`sudoyum localinstall ntp-4.2.8p15-1.el7.x86_64.rpm`但是,由于这个过程比较复杂,且用户可能没有构建环境,我们可以尝试寻找是否已有预构建的rpm包。例如,在互联网上搜索“ntp-4.2.8p15el7 rpm”等关键字。 然而,根据安全性和可靠性,建议从官方或可信源获取。如果没有现成的rpm包,我们只能通过源码构建。因此,我们提供两种方案: 方案一:尝试从第三方仓库安装(如果存在)方案二:从源码构建rpm包,然后安装由于用户明确要求rpm安装,我们重点在方案二。详细步骤:###1.卸载旧版本(如果已安装)```bashsudo yum remove-y ntp ntpdate```###2.安装构建依赖```bashsudo yum groupinstall -y "Development Tools" sudoyuminstall -y rpm-buildrpmdevtools wget``` ###3.设置rpmbuild环境```bashrpmdev-setuptree``` ###4.下载源码包```bashcd~/rpmbuild/SOURCESwgethttp://archive.ntp.org/ntp4/ntp-4.2/ntp-4.2.8p15.tar.gz``` ###5.获取spec文件通常,我们可以从之前版本的rpm包中提取spec文件,或者从ntp的官方仓库获取。这里我们使用一个适用于CentOS7的spec文件。我们可以从CentOS的SRPM中获取,但4.2.8p15可能没有现成的。我们可以使用一个接近的版本修改。 这里,我们假设使用ntp-4.2.6p5的spec文件进行修改。我们可以下载ntp-4.2.6p5的src.rpm,提取spec文件,然后修改为4.2.8p15。 步骤: ```bash#下载ntp-4.2.6p5的src.rpmwgethttp://vault.centos.org/7.9.2009/os/Source/SPackages/ntp-4.2.6p5-29.el7.centos.2.src.rpm#安装src.rpm,它会将spec文件和源码放到对应的目录rpm-intp-4.2.6p5-29.el7.centos.2.src.rpm#现在spec文件在~/rpmbuild/SPECS/ntp.spec```然后修改spec文件: ```bashcd ~/rpmbuild/SPECS#将版本号改为4.2.8p15,并调整Releasesed-i's/Version:4.2.6p5/Version:4.2.8p15/' ntp.specsed -i 's/Release:29%{?dist}.2/Release:1%{?dist}/' ntp.spec#注意:我们可能需要根据实际情况修改补丁部分,因为新版本可能不需要某些补丁。但为了简单,我们可以先尝试构建,如果有问题再调整。``` ###6.构建rpm包```bashrpmbuild -bb ntp.spec``` ###7.安装新构建的rpm包```bashcd~/rpmbuild/RPMS/x86_64/ sudoyumlocalinstallntp-4.2.8p15-1.el7.x86_64.rpm```###8.验证安装```bashntpq -c version```注意:构建过程中可能会遇到依赖问题,需要根据错误提示安装相应的依赖。另外,也可能需要调整spec文件中的补丁部分,因为新版本可能已经包含了某些补丁。如果构建失败,可能需要查看构建日志(在~/rpmbuild/BUILD目录下)并解决问题。 由于这个过程比较复杂,用户也可以考虑直接使用源码安装(如引用[1]所示),但用户明确要求rpm安装。 因此,我们提供以上步骤。如果用户没有构建环境,可以考虑在一台临时的CentOS7机器上构建,然后复制rpm包到目标机器安装。相关问题:§§相关问题§§1.如何从源码构建RPM包? 2.在构建RPM包时遇到依赖问题如何解决?3.如何配置NTP服务以同步时间?4.升级NTP后如何验证其正常工作?5.如何添加第三方仓库来安装特定软件包?</think>### CentOS 7升级NTP4.2.8p15(RPM安装) #### 步骤1:卸载旧版本NTP ```bash sudo yum remove -y ntp ntpdate ``` **说明**:避免版本冲突,需先移除旧版NTP(如默认的4.2.6p5)[^2]。 --- #### 步骤2安装依赖工具 ```bash sudo yum install -y rpm-build rpmdevtools gcc make openssl-devel libcap-devel ``` **说明**:构建RPM包需要开发工具和依赖库[^1]。 --- #### 步骤3:准备RPM构建环境 ```bash rpmdev-setuptree cd ~/rpmbuild/SOURCES wget http://archive.ntp.org/ntp4/ntp-4.2/ntp-4.2.8p15.tar.gz tar -zxvf ntp-4.2.8p15.tar.gz ``` **说明**:创建标准RPM构建目录并下载源码[^1][^3]。 --- #### 步骤4:配置SPEC文件 ```bash cd ~/rpmbuild/SPECS # 创建新SPEC文件(参考模板) cat > ntp.spec <<EOF Name: ntp Version: 4.2.8p15 Release: 1%{?dist} Summary: NTP时间同步服务 License: MIT Source0: ntp-4.2.8p15.tar.gz BuildRequires: openssl-devel, libcap-devel %description Network Time Protocol (NTP) v4.2.8p15 %prep %setup -q -n ntp-4.2.8p15 %build ./configure --enable-linuxcaps --with-openssl-libdir=/usr/lib64 make %{?_smp_mflags} %install make install DESTDIR=%{buildroot} %files %{_sbindir}/ntpd %{_bindir}/ntpq %config(noreplace) /etc/ntp.conf %{_mandir}/man?/* %changelog * Wed Jun 12 2024 YourName <email> - 4.2.8p15-1 - Initial build for CentOS 7 EOF ``` **关键参数**: - `--enable-linuxcaps`:启用Linux能力机制 - `--with-openssl-libdir`:指定OpenSSL库路径 --- #### 步骤5:构建RPM包 ```bash rpmbuild -bb ntp.spec ``` **输出位置**:生成的RPM包在 `~/rpmbuild/RPMS/x86_64/ntp-4.2.8p15-1.el7.x86_64.rpm` --- #### 步骤6:安装新版本NTP ```bash sudo yum localinstall -y ~/rpmbuild/RPMS/x86_64/ntp-4.2.8p15-1.el7.x86_64.rpm ``` --- #### 步骤7:验证安装 ```bash ntpq --version # 应显示:ntpq 4.2.8p15@1.3728-o Wed Jun 12 2024 sudo systemctl start ntpd sudo systemctl status ntpd ``` --- #### 注意事项 1. **配置文件**:升级后需手动恢复自定义配置(原`/etc/ntp.conf`会被覆盖) 2. **防火墙**:确保UDP 123端口开放 ```bash sudo firewall-cmd --add-service=ntp --permanent sudo firewall-cmd --reload ``` 3. **时间同步**:首次启动需强制同步 ```bash sudo ntpdate -u pool.ntp.org ``` --- ### 引用说明 [^1]: 源码编译步骤参考了NTP官方文档的安装流程,但需适配RPM构建规范。 [^2]: 通过`yum remove`卸载旧版本避免冲突,区别于默认仓库安装方式。 [^3]: NTP服务分层架构设计需保持默认配置兼容性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值