Tại sao NTP yêu cầu truy cập tường lửa hai chiều vào cổng UDP 123?


17

Từ các quy tắc iptables để cho phép ntp là gì? :

iptables -A INPUT -p udp --dport 123 -j ACCEPT
iptables -A OUTPUT -p udp --sport 123 -j ACCEPT

Ngoài ra, từ trang web của NTP :

... ntpd yêu cầu quyền truy cập hai chiều đầy đủ vào cổng UDP đặc quyền 123. ...

Câu hỏi của tôi là, tại sao? Đối với một người không quen thuộc với NTP, đây có vẻ như là một lỗ hổng bảo mật tiềm ẩn, đặc biệt là khi tôi yêu cầu một khách hàng của tôi mở cổng đó trong tường lửa của họ để máy chủ của tôi có thể giữ đồng bộ hóa thời gian của họ. Có ai có một lời biện minh đàng hoàng tôi có thể đưa ra cho khách hàng của mình để thuyết phục họ rằng tôi cần quyền truy cập này trong tường lửa không? Giúp đỡ được đánh giá cao! :)


2
Bạn đã đọc phần "cho phép liên quan / thành lập" chưa? Nếu quy tắc này có mặt thì không cần quy tắc đầu vào chung cho cổng UDP 123.
VMai

1
Đây thực sự là một lỗ hổng bảo mật tiềm năng? Đây là cụm từ lặp đi lặp lại mà tôi nghĩ là vô nghĩa. Đó là năm 2014, đã đến lúc không thu hút các cổng nhỏ hơn 1024 với các thuộc tính đặc biệt và chặn tất cả lưu lượng truy cập không được yêu cầu rõ ràng. Bạn đang mở một cổng tới một máy từ một số máy chủ nhất định trên internet.
dfc

Tôi đồng ý, nó không thực sự là một lỗ hổng bảo mật tiềm năng, nhưng tôi làm việc trong ngành tài chính và mọi người luôn lo lắng về việc mở tường lửa trong trường hợp "có gì đó thông qua". Luôn có giá trị biện minh tốt trong tay, cộng với việc tôi tò mò về câu trả lời của chính mình - ntpd trên máy chủ thời gian có thực sự thực hiện các kết nối gửi đến khách hàng của mình để gửi cập nhật thời gian không? Nghe có vẻ lạ và không đặc biệt có thể mở rộng.
DuffJ

Tôi đã googled cái này một vài ngày trước, nó có thể quản lý mà không cần kết nối đến.
barlop

@VMai, người đã nói rằng trên superuser.com/questions/141772/, không đưa ra ví dụ nào, nhưng tôi nghĩ rằng anh ta có nghĩa là cho phép các kết nối gửi đi, các gói tin đến trong đó. Điều đó khác với khái niệm rằng "ntpd yêu cầu quyền truy cập hai chiều đầy đủ vào cổng UDP đặc quyền 123. ..." nghe có vẻ như một kết nối đến. Nếu anh ta muốn cho phép đến và đi bằng cách sử dụng liên quan / thành lập thì anh ta cần 4 quy tắc. 2 cho các kết nối đến, 2 cho các kết nối đi.
barlop

Câu trả lời:


10

Bạn chỉ cần cho phép các cổng của NTP lưu lượng truy cập đến nếu bạn đang hoạt động như một máy chủ, cho phép khách hàng đồng bộ hóa với bạn.

Mặt khác, sự tồn tại của trạng thái NTP sẽ tự động xác định xem gói NTP đến có bị chặn hoặc cho phép bởi trạng thái tường lửa hiện có mà chúng tôi đã khởi tạo hay không.

iptables -A OUTPUT -p udp --sport 123 --dport 123 -j CHẤP NHẬN

iptables -A INPUT -m state --state THÀNH LẬP, LIÊN QUAN -j CHẤP NHẬN

Xin vui lòng cho tôi biết nếu các quy tắc iptables là đúng. Tôi không có kinh nghiệm với iptables. Máy khách NTP của tôi vẫn được đồng bộ hóa trên bộ định tuyến pfSense của tôi chỉ với quy tắc cho phép gửi đi vì pfSense là tường lửa có trạng thái.


1
Điều này có vẻ hợp lý! Thật không may, tôi không còn ở vị trí để xác nhận tính chính xác của câu trả lời của bạn; tuy nhiên, tôi sẽ chấp nhận vì nó có vẻ hợp lý. Cảm ơn nhiều!
DuffJ

1

NTP yêu cầu truy cập hai chiều trên cổng 123 vì NTP RFC chỉ định những điều sau đây liên quan đến cổng nguồn của máy khách:

Khi hoạt động ở chế độ đối xứng (1 và 2), trường này phải chứa số cổng NTP PORT (123) được chỉ định bởi IANA.

Vì cổng nguồn của máy khách là 123, khi máy chủ gửi phản hồi trở lại, nó sẽ gửi nó đến cổng 123. Đương nhiên, để có thể nhận được phản hồi đó, khách hàng phải cho phép phản hồi đến trên cổng 123. Thông thường các phản hồi sẽ quay trở lại một chút phạm vi cổng phù du .

Như Ben Cook đã đề cập ở trên, điều này chỉ được yêu cầu khi xử lý tường lửa không trạng thái vì tường lửa có trạng thái sẽ cho phép phản hồi quay lại mà không có quy tắc rõ ràng.


0

Tôi nghĩ rằng giải pháp tốt nhất là kích hoạt cổng 123 cho đầu vào, chỉ cho các địa chỉ IP dự kiến ​​sẽ cung cấp cho máy chủ của bạn tín hiệu ntp.
Bên trong tệp cấu hình ntp, /etc/ntp.conf, có các địa chỉ của một số máy chủ ntp mà máy chủ của bạn sẽ trỏ vào. Bạn có thể sử dụng lệnh tra cứu để tìm ip tương ứng cho mỗi địa chỉ.

host -t a 0.debian.pool.ntp.org

Sau đó, bạn có thể thêm quy tắc vào tường lửa máy chủ:

iptables -I INPUT -p udp -s 94.177.187.22 -j ACCEPT

... vân vân.
Điều này có thể ngăn chặn bất kỳ người độc hại làm hỏng máy chủ của bạn.
Tôi nghĩ rằng nó không được sử dụng hạn chế đầu ra.


-1

Giao tiếp từ máy chủ đến máy chủ là cổng nguồn và cổng đích 123. Điều thuận tiện nhất là cho phép rõ ràng rằng ít nhất là đối với các máy chủ mà bạn đang chạy dịch vụ ntp.

Bạn có thể xem xét chỉ để lộ một máy chủ bên ngoài ra Internet để có thời gian từ các nguồn bên ngoài. Dịch vụ ntp nội bộ đồng bộ hóa với điều này có thể là nguồn cho tất cả các thiết bị. Nếu các máy chủ này được dành riêng cho mục đích thì khả năng phơi nhiễm có thể bị hạn chế: họ chỉ chấp nhận lưu lượng ntp và không lưu trữ dữ liệu khác.

Thay phiên, không sử dụng một mạng IP bên ngoài. Ví dụ, sử dụng nguồn radio như GPS.

http://www.diablotin.com/librairi/networking/firewall/ch08_13.htm http://support.ntp.org/bin/view/Support/Troubledh BootNTP


1
Cảm ơn câu trả lời này, nhưng nó không trả lời câu hỏi. Điều gì xảy ra nếu tôi là quản trị viên hệ thống và muốn mở tường lửa của mình để tôi có thể thiết lập dịch vụ NTP nội bộ? Không ai có vẻ vẫn có bất kỳ ý tưởng nào tại sao truy cập hai chiều (nguy hiểm hơn nhiều so với truy cập một chiều) là cần thiết cho NTP.
DuffJ 24/07/2015
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.