admin管理员组

文章数量:1516870

NTP时间服务器(带MD5身份验证)

参考文章:



配置一台在公网上的时间服务器,带MD5身份验证,以防止被用来做反射攻击等。

操作系统:CentOS7.3,但是这个对操作系统要求不那么严格的,重点是配置文件,都可以参照。

一、服务端设置

假设公网IP为xxx.xxx.xxx.xxx

1、防火墙开启UDP123端口:

firewall-cmd --zone=public --add-port=123/udp --permanent    
firewall-cmd --reload
firewall-cmd --query-port=123/udp
firewall-cmd --zone=public --list-ports

2、安装NTP

yum install -y ntp查看自带版本:
ntpd --version
ntpd 4.2.6p5

这个版本比较低,考虑到已经爆出的安全漏洞,建议卸载掉然后重新编译安装下面的版本:

yum -y remove ntp ntpdate
wget .2/ntp-4.2.8p12.tar.gz【巨慢】
Windows下载:.2/ntp-4.2.8p12.tar.gz然后传上来。
yum -y install gcc gcc-c++ openssl-devel libstdc++* libcap*
tar -zxvf ntp-4.2.8p12.tar.gz
cd ntp-4.2.8p12/
./configure --prefix=/usr --bindir=/usr/sbin --enable-all-clocks --enable-parse-clocks --docdir=/usr/share/doc/ntp-4.2.8p12
make && make install
ln -s /usr/local/ntp-4.2.8p12 /usr/local/ntp
查看ntp版本:
ntpd --version

3、服务端生成MD5文件

ntp-keygen -M

生成的MD5 keys会在/home/xxx 下,通常命名为ntpkey_MD5key_+主机名+随机数字;
将其复制为: /etc/ntp/keys
chmod 600 /etc/ntp/keys

cat /etc/ntp/keys内容一般如下:第一列是ID号,后面会用到,一条一个ID号

 1 MD5 dZ}eW@jS$T$ifBuYv<9b  # MD5 key
 2 MD5 S1+up2v-rDs-$kn+0P-5  # MD5 key
 3 MD5 ui)\IwA*aT+(ou}tk{=L  # MD5 key
 4 MD5 4k,.5+i'p.Z4]UH~ZwW  # MD5 key
 5 MD5 u=I*9(8.uCw:$Mki:d>5  # MD5 key
 6 MD5 )"9x5-]Ys!:V)T_=St?Q  # MD5 key
 7 MD5 x`h%NW~"+6p^|mwW^4^  # MD5 key
 8 MD5 a<|<*a6/Hh[4V(A'L4]b  # MD5 key
 9 MD5 pnfUPPLU(+qJrTP5lY].  # MD5 key
10 MD5 38Nrat-paqNSG(Il?5(  # MD5 key
11 SHA1 057e1c91901fb54dd2aa1b6647c4f9ae41116ca4  # SHA1 key
12 SHA1 19af540745b340db0f9914b5dc52ce0353d2332a  # SHA1 key
13 SHA1 d130bba96fb2ed91f667df29144b410963049bc0  # SHA1 key
14 SHA1 e0add5f5faa1f3b643e32429892e2b929e67fb5e4  # SHA1 key
15 SHA1 d0c2650c8913348541a63926e3c2cafd1eea552  # SHA1 key
16 SHA1 8f4e823cdf175e369417d29e0d28b677c4521eda  # SHA1 key
17 SHA1 5128923addaa9ca72b56acac9c692a7eb60b9ef2  # SHA1 key
18 SHA1 c8dacc921faf323ab63225d3a0729d46b1d2a637e  # SHA1 key
19 SHA1 30140db7409aea8236f371df64170f94957ce2b00  # SHA1 key
20 SHA1 8f4ef4afd68d99d07a23d8b689f26b1395fe3dc8e  # SHA1 key

4、配置文件:

vim /etc/ngt.conf

已经去除注释:

driftfile /var/lib/ntp/drift
logfile /var/log/ntpd.log
restrict default kod nomodify notrap nopeer notrust #允许所有的访问,但需要有trust的才可以
restrict -6 default kod nomodify notrap nopeer notrust
restrict 127.0.0.1
restrict ::1

server 1worktime iburst         #www.ntp官网上提供的中国区服务器地址
server ntp.synet.edu iburst          #www.ntp官网上提供的中国区服务器地址
server cn.pool.ntp iburst           #中国区时间池
server ntp.aliyun  iburst           #阿里云
server ntp1.aliyun iburst           #阿里云1
server ntp.ntsc.ac  iburst                   #中科院国家授时中心
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
trustedkey 1 2 3 4 5 6 7 8 9 10  #这个地方吧,写几个ID都行,反正上面MD5生成了那么多,不在这里的不会被校验
requestkey 1 2 3 4 5 6 7 8 9 10
controlkey 1
authdelay 0.000094 #加个计算验证时间偏差
disable monitor

5、启动服务,

/usr/bin/ntpd -c /etc/ntp.conf,顺便把它写进/etc/rc.local里去,愿意的话可以给它加进系统服务。

6、查看状态,

ntpq -p  #查看有没有找到上层的那些时间服务器

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
-120.132.6.211   10.23.255.101    4 u  572 1024  377   29.587  -20.941   3.946
+dns2.synet.edu. 202.118.1.48     2 u  669 1024  377   66.664   -4.861   2.927
-b.sin.pobot 17.253.82.253    2 u  520 1024  215  177.992  -30.089   5.083
*203.107.6.88    100.107.25.114   2 u  848 1024  377   29.240   -1.544   0.460
+120.25.115.20   10.137.53.7      2 u  647 1024  377   20.654    1.462   0.286
-114.118.7.161   123.139.33.3     2 u  476 1024  377   36.516  -54.818  10.104

ntpstat #查看有没有开始同步,编译安装的没有这个命令,不过从别的yum安装的机器上传一个过来到/usr/bin啊/usr/sbin之类的l路径下就可以了

[root@xxxxxxx~]# ntpstat
synchronised to NTP server (203.107.6.88) at stratum 3 
   time correct to within 71 ms
   polling server every 1024 s

二、客户端设置

1、安装,可以编译安装,也可以直接yum install ntp。客户端版本低一点也没啥关系。

2、配置文件

vim /etc/ntp.conf

driftfile /var/lib/ntp/drift
logfile /var/log/ntpd.log
restrict default nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict ::1
server xxx.xxx.xxx.xxx key 4  #这里注意,首先指定服务器公网IP,后面指定校验的key的ID,写4,意味着服务端要验证的MD5码的ID是4,写其他的也行,只要服务器端的配置文件里列出来的都可以,本文为例,写1~10都可以,写1个就够用了,不用多写。
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
trustedkey 4  #这里的ID跟上面一样。
disable monitor

3、/etc/ntp/keys

这里可以直接把服务端的整个/etc/ntp/keys文件复制过来,也可以只复制ID为4的那一行,因为本客户端只指定校验ID为4的key,别的复制过来也没啥用的,实际过程中,可以单独复制一条作为keys文件分发给所有客户端。

cat /etc/ntp/keys

 4 MD5 4k,.5+i'p.Z4]UH~ZwW  # MD5 key

4、如果想要允许硬件也进行时间同步:

echo "SYNC_HWCLOCK=yes" >>/etc/sysconfig/ntpd 

5、启动ntp服务,查看状态【视情况和环境不同,最长大概得5到10分钟】

service ntp start (yum 安装的)

ntpq -p#如果reach那一列一直是0就肯定有问题了。

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*xxx.xxx.xxx.xxx  aaa.aaa.aaa.aaa     3 u  429 1024  377    1.488   -0.392   0.548

 

ntpstat 查看有无同步。

 

 

本文标签: NTP时间服务器(带MD5身份验证)