Mengapa NTP memerlukan akses firewall dua arah ke port UDP 123?

17

Dari Apa aturan iptables untuk mengizinkan ntp? :

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

Juga, dari situs web NTP :

... ntpd memerlukan akses dua arah penuh ke port UDP istimewa 123. ...

Pertanyaan saya adalah, mengapa? Untuk seseorang yang tidak terbiasa dengan NTP, ini sepertinya lubang keamanan potensial, terutama ketika saya meminta klien saya untuk membuka port di firewall mereka sehingga server saya dapat menjaga waktu mereka tersinkronisasi. Adakah yang memiliki justifikasi yang layak yang dapat saya berikan kepada klien saya untuk meyakinkan mereka bahwa saya memerlukan akses ini di firewall? Bantuan dihargai! :)

DuffJ
sumber
2
Sudahkah Anda membaca bagian tentang "bolehkan yang terkait / mapan"? Jika aturan ini ada, tidak perlu aturan input umum untuk port UDP 123.
VMai
1
Apakah ini benar-benar lubang keamanan potensial? Ini adalah ungkapan berulang yang saya pikir tidak ada artinya. Sekarang tahun 2014, saatnya untuk tidak memberikan port kurang dari 1024 dengan properti khusus dan memblokir semua lalu lintas yang tidak secara eksplisit diperlukan. Anda membuka satu port ke satu mesin dari host tertentu di internet.
dfc
Saya setuju, ini sebenarnya bukan lubang keamanan potensial, tetapi saya bekerja di industri keuangan dan orang-orang selalu gugup membuka firewall jika-kalau ada sesuatu yang terjadi. Itu selalu layak memiliki pembenaran yang baik di tangan, ditambah saya ingin tahu tentang jawabannya sendiri - apakah ntpd pada server waktu benar-benar membuat koneksi keluar ke klien untuk mengirim pembaruan waktu? Kedengarannya aneh dan tidak terlalu terukur.
DuffJ
Saya googled ini beberapa hari yang lalu, dapat dikelola tanpa koneksi masuk dibuat
barlop
@VMai orang yang mengatakan bahwa pada superuser.com/questions/141772/… tidak memberikan contoh, tapi saya pikir dia bermaksud untuk mengaktifkan koneksi keluar, paket masuk di dalamnya. Itu berbeda dengan konsep bahwa "ntpd memerlukan akses dua arah penuh ke port UDP istimewa 123. ..." yang terdengar seperti koneksi masuk. Jika dia ingin mengizinkan masuk dan keluar menggunakan terkait / mapan maka dia akan membutuhkan 4 aturan. 2 untuk koneksi masuk, 2 untuk koneksi keluar.
barlop

Jawaban:

10

Anda hanya perlu mengizinkan lalu lintas masuk port NTP jika Anda bertindak sebagai server, yang memungkinkan klien untuk menyinkronkan kepada Anda.

Jika tidak, keberadaan status NTP akan secara otomatis menentukan apakah paket NTP yang masuk diblokir atau diizinkan oleh keadaan firewall yang sudah ada yang kami mulai.

iptables -P OUTPUT -p udp --port 123 --dport 123 -j MENERIMA

iptables -A INPUT -m state --stat ESTABLISHED, TERKAIT -j MENERIMA

Tolong beri tahu saya jika aturan iptables sudah sesuai. Saya tidak punya pengalaman dengan iptables. Klien NTP saya tetap disinkronkan di router pfSense saya hanya dengan aturan izin keluar karena pfSense adalah firewall stateful.

Ben Cook
sumber
1
Ini sepertinya masuk akal! Sayangnya saya tidak lagi dalam posisi untuk mengkonfirmasi kebenaran jawaban Anda; Namun, saya akan menerimanya karena itu memang logis. Terimakasih banyak!
DuffJ
1

NTP memerlukan akses dua arah pada port 123 karena NTP RFC menentukan hal-hal berikut mengenai port sumber klien:

Saat beroperasi dalam mode simetris (1 dan 2), bidang ini harus berisi nomor port NTP PORT (123) yang ditetapkan oleh IANA.

Karena port sumber klien adalah 123, ketika server mengirim respons kembali, ia akan mengirimnya ke port 123. Secara alami, agar dapat menerima respons itu, klien harus mengizinkan tanggapan masuk pada port 123. Biasanya respons akan kembali pada beberapa rentang port fana .

Seperti yang disebutkan Ben Cook di atas, ini hanya diperlukan ketika berhadapan dengan firewall stateless karena firewall stateful akan memungkinkan respons untuk kembali tanpa aturan eksplisit.

Gurpreet Atwal
sumber
0

Saya pikir solusi terbaik adalah mengaktifkan port 123 untuk input, hanya untuk alamat ip yang diharapkan memberi server Anda sinyal ntp.
Di dalam file konfigurasi ntp, /etc/ntp.conf, ada alamat beberapa server ntp yang harus ditunjukkan oleh server Anda. Anda dapat menggunakan perintah pencarian untuk menemukan ip yang sesuai untuk setiap alamat.

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

Kemudian Anda dapat menambahkan aturan ke firewall server:

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

... dan seterusnya.
Ini dapat mencegah orang jahat merusak server Anda.
Saya pikir tidak ada gunanya membatasi output.

Leonardo Gugliotti
sumber
-1

ntp server ke server komunikasi adalah sumber dan tujuan port 123. Sangat mudah untuk secara eksplisit mengizinkan setidaknya untuk host di mana Anda menjalankan layanan ntp.

Anda mungkin mempertimbangkan untuk hanya mengekspos host eksternal ke Internet untuk mendapatkan waktu dari sumber luar. Layanan ntp internal yang disinkronkan dengan ini dapat menjadi sumber untuk semua perangkat. Jika host ini didedikasikan untuk tujuan kemungkinan paparan terbatas: mereka hanya menerima lalu lintas ntp dan tidak menyimpan data lainnya.

Sebagai alternatif, jangan gunakan jaringan IP eksternal sama sekali. Gunakan sumber radio seperti GPS untuk waktu, misalnya.

http://www.diablotin.com/librairie/networking/firewall/ch08_13.htm http://support.ntp.org/bin/view/Support/TroubleshootingNTP

John Mahowald
sumber
1
Terima kasih atas jawaban ini, tetapi tidak menjawab pertanyaan. Bagaimana jika saya adalah administrator sistem dan ingin membuka firewall saya sehingga saya dapat mengatur layanan NTP internal? Tidak seorang pun tampaknya masih memiliki gagasan mengapa akses dua arah (yang jauh lebih berbahaya daripada akses satu arah) diperlukan untuk NTP.
DuffJ