Tại sao điều quan trọng là các máy chủ có cùng thời gian?


35

Tôi đã đọc nhiều lần (mặc dù tôi không thể tìm thấy ngay bây giờ) rằng các trung tâm dữ liệu phải nỗ lực rất nhiều để đảm bảo rằng tất cả các máy chủ đều có cùng thời gian. Bao gồm, nhưng không giới hạn ở việc lo lắng về giây nhuận.

Tại sao nó quan trọng đến mức các máy chủ có cùng thời gian? Và dung sai thực tế là gì?

Câu trả lời:


53

Bảo vệ

Nói chung, dấu thời gian được sử dụng trong các giao thức xác thực khác nhau để giúp ngăn chặn các cuộc tấn công , trong đó kẻ tấn công có thể sử dụng lại mã thông báo xác thực mà anh ta có thể đánh cắp (ví dụ bằng cách đánh hơi mạng).

Xác thực Kerberos thực hiện chính xác điều này, ví dụ. Trong phiên bản Kerberos được sử dụng trong Windows, dung sai mặc định là 5 phút.

Điều này cũng được sử dụng bởi các giao thức mật khẩu một lần khác nhau được sử dụng để xác thực hai yếu tố như Google Authenticator, RSA SecurID, v.v. Trong những trường hợp này, dung sai thường là khoảng 30-60 giây.

Nếu không có thời gian đồng bộ hóa giữa máy khách và máy chủ, sẽ không thể hoàn tất xác thực. (Hạn chế này được loại bỏ trong các phiên bản mới nhất của MIT Kerberos, bằng cách yêu cầu người yêu cầu và KDC xác định độ lệch giữa các đồng hồ của họ trong khi xác thực, nhưng những thay đổi này xảy ra sau Windows Server 2012 R2 và sẽ mất một lúc trước khi bạn thấy nó trong Windows phiên bản. Nhưng một số triển khai của 2FA có thể sẽ luôn cần đồng hồ được đồng bộ hóa.)

Quản trị

Có đồng hồ đồng bộ giúp làm việc dễ dàng hơn với các hệ thống khác nhau. Ví dụ, các mục nhật ký tương quan từ nhiều máy chủ sẽ dễ dàng hơn nhiều nếu tất cả các hệ thống có cùng thời gian. Trong những trường hợp này, bạn thường có thể làm việc với dung sai 1 giây, NTP sẽ cung cấp, nhưng lý tưởng nhất là bạn muốn thời gian được đồng bộ hóa chặt chẽ như bạn có thể chi trả. PTP, cung cấp dung sai chặt chẽ hơn nhiều, có thể tốn kém hơn nhiều để thực hiện.


16
+1 Khắc phục sự cố các điều kiện lỗi trên các ystems phân tán với dấu thời gian không đăng nhập không đồng bộ: không bao giờ lặp lại
Mathias R. Jessen

3
Các máy chủ chạy trình nền NTP thường được đồng bộ hóa trong vòng 0,01 giây (vài mili giây). Đồng bộ hóa Windows NTP gốc chỉ kiểm tra một vài lần một ngày và không chính xác. Có các máy khách NTP có sẵn cho Windows, cung cấp khả năng đồng bộ hóa tốt.
BillThor

+1 cho câu trả lời này, vì tôi chỉ kiểm tra thời gian hệ thống của mình và tôi đã trễ 5 giây, nhưng bây giờ tôi đang sử dụng ntp để đồng bộ hóa, sẽ rất tốt nếu thêm vào câu hỏi một liên kết đến ntp.org để mọi người có thể kiểm tra hệ thống
Freedo

2
makecũng bị nhầm lẫn bởi độ lệch đồng hồ giữa NFS máy khách / máy chủ.
Sobrique

@BillThor thông tin của bạn về dịch vụ thời gian của windows chậm hơn một thập kỷ. Nó đã là một máy khách NTP đầy đủ kể từ khi phát hành 2003R2 và đồng bộ hóa một phần tác nhân thích ứng của một miền AD. Chúng tôi thấy <16 ms bù đắp điển hình trên 2008R2 giới hạn của dấu thời gian hệ thống 64Hz. Chúng tôi thấy các máy chấm công thậm chí còn tốt hơn trên các hộp 2012+ có thể sử dụng các khoảng đánh dấu nhỏ hơn.
rmalayter

17

Chủ yếu, để bạn có thể tương quan các sự cố từ nhật ký trên các thiết bị khác nhau. Giả sử bạn gặp sự cố bảo mật khi có ai đó truy cập cơ sở dữ liệu của bạn thông qua máy chủ web của bạn - bạn muốn dấu thời gian trên tường lửa, bộ cân bằng tải, máy chủ web và máy chủ cơ sở dữ liệu của bạn khớp với nhau để bạn có thể tìm thấy nhật ký trên mỗi thiết bị có liên quan đến vụ việc. Lý tưởng nhất là bạn muốn mọi thứ chỉ trong vài mili giây. Và nó cần phải đồng bộ với thời gian bên ngoài thực tế, do đó bạn cũng có thể tương quan nhật ký của mình với nhật ký của bên thứ ba nếu điều đó trở nên cần thiết.


2
Ngoài ra, một số giải pháp bảo mật như ldap và / hoặc kerberos sẽ thất bại nếu thời gian không được đồng bộ hóa. Như một số giải pháp HA.
Jenny D nói Phục hồi lại

7

Không chỉ quan trọng từ góc độ quản trị, mà việc đồng bộ hóa đồng bộ của tôi cũng quan trọng từ mối tương quan cấp độ ứng dụng. Điều này phụ thuộc vào cách giải pháp được thiết kế, cách các ứng dụng đang chạy lấy dấu thời gian của chúng cho bất kỳ giao dịch nào chúng có thể hoạt động. Tôi đã thấy xác thực giao dịch thất bại do một ứng dụng chạy trên máy chủ có quá nhiều bù (khoảng 20 giây trong tương lai) so với các ứng dụng khác mà nó đang tương tác.

Ngoài ra, nếu ảo hóa trên máy chủ VMWare ESXi và thời gian của VM không đồng bộ với máy ảo hóa, thì một hành động như vmotion có thể đồng bộ hóa lại đồng hồ VM với các trình ảo hóa và điều này có thể dẫn đến kết quả không thể đoán trước nếu chênh lệch thời gian đủ lớn.

Tôi không biết dung sai thực tế là gì, vì tôi nghĩ nó phụ thuộc rất nhiều vào loại hệ thống nào, nhưng tôi nghĩ nói chung có thể đạt được để giữ cho các máy chủ trong trung tâm dữ liệu có độ lệch ít hơn một giây giữa nhau.


6

Vì bạn đã đề cập đến những giây nhuận nên cần lưu ý rằng chúng đòi hỏi phải xử lý đặc biệt khó khăn.

Chúng thường được thêm bằng cách tiêm một giây vào 23:59:60, điều này có vấn đề nếu bạn xác thực dấu thời gian là 0-59 cho các trường phút và giây. Việc thay thế lặp lại 23:59:59 để kéo dài 2 giây sẽ không tốt hơn nhiều vì điều đó sẽ gây rối với bất cứ thứ gì nhạy cảm với thời gian xuống mức mỗi giây.

Google thực sự đã đưa ra một giải pháp tốt trong một thời gian trước đó dường như chưa được áp dụng rộng rãi. Giải pháp của họ là áp dụng một bước "bôi nhọ" và phân chia thay đổi trong một khoảng thời gian, toàn bộ quá trình được quản lý bởi một máy chủ NTP. Họ đã xuất bản một blog về nó vào năm 2011, làm cho việc đọc thú vị và dường như có liên quan đến câu hỏi này.


Nghe có vẻ giống như hành vi xoay vòng của một số khách hàng NTP , đã được thực hiện như mãi mãi.
CVn

@ MichaelKjorling loại. Sự khác biệt là xoay được nhằm tránh các bước nhảy lớn sau khi đồng hồ được xác định là sai bằng cách điều chỉnh theo thời gian. Những gì google đã làm là cố tình thêm một phần bù vào máy chủ ntp của họ, xoay vòng trước và do đó không bao giờ có bước nhảy vọt thứ hai.
Kaithar

5

Bất cứ khi nào có dấu thời gian, các thiết bị không đồng bộ hóa có thể tạo ra các lỗi không hợp lý, như: A gửi truy vấn đến B và câu trả lời của B đi kèm với dấu thời gian sớm hơn truy vấn, có thể khiến A bỏ qua nó.


4

Tôi đồng ý với tất cả các điểm trên. Tôi muốn đưa ra nhiều suy nghĩ
Một số cơ sở dữ liệu như Cassendra phụ thuộc rất nhiều vào dấu ấn thời gian . Đó là cách nó đối phó với sự tương tranh.

Dấu thời gian khác nhau sẽ làm rối tung cơ sở dữ liệu.


2
Điều này tốt hơn được đăng dưới dạng một bình luận
Dave M

Vì vậy, tôi đã nâng cấp glibc trên một loạt các máy CentOS 5.2 và bản cập nhật đã vô tình đặt một nửa múi giờ MST - chúng tôi ngay lập tức gặp sự cố với người dùng ngẫu nhiên đăng xuất do "không hoạt động". Tất cả các loại vật dụng nhỏ và né tránh đều mong muốn thời gian sẽ ít nhiều đúng. Ngoài ra, nếu thời gian của bạn sai và bị tự động quay trở lại, bạn sẽ kết thúc với các tệp và ghi dấu thời gian thực sự khó hiểu và đến từ tương lai ...
Một số Linux Nerd

Tôi hy vọng điều này sẽ đúng với rất nhiều cơ sở dữ liệu phân tán. Một sự khác biệt về dấu thời gian chỉ trong vài giây có thể đủ để đảo ngược thứ tự của hai thao tác.
Kaithar
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.