Чому для NTP потрібен двосторонній брандмауер для доступу до порту 123 UDP?


17

З яких правил iptables дозволяти ntp? :

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

Також з веб-сайту NTP :

... ntpd вимагає повного двонаправленого доступу до привілейованого порту UDP 123. ...

Моє запитання: чому? Для когось, хто не знайомий з NTP, це здається потенційним отвором у безпеці, особливо коли я прошу мого клієнта відкрити цей порт у брандмауері, щоб мої сервери могли синхронізувати свій час. Хтось має гідне обґрунтування, яке я можу дати своєму клієнту, щоб переконати їх у тому, що мені потрібен такий доступ у брандмауері? Допомога цінується! :)


2
Ви читали частину про "дозволити пов'язане / встановлене"? Якщо це правило присутнє, немає необхідності в загальному вхідному
праві

1
Це справді потенційна дірка безпеки? Це неодноразова повторна фраза, яку я вважаю безглуздою. Настав час 2014 року не нав'язувати порти менше 1024 спеціальними властивостями та блокувати весь трафік, який явно не вимагається. Ви відкриваєте один порт на одну машину від певних хостів в Інтернеті.
dfc

Я погоджуюся, це насправді не потенційна діра в безпеці, але я працюю у фінансовій індустрії, і люди завжди нервують відкриття брандмауерів на випадок, якщо "щось пробивається". Завжди варто мати гарне обґрунтування, плюс мені цікаво сама відповідь - чи дійсно ntpd на сервері часу здійснює вихідні з'єднання зі своїми клієнтами для надсилання оновлень часу? Це звучить дивно і не особливо масштабно.
DuffJ

Я переглянув цей Google кілька днів тому, він може керувати без вхідного з'єднання.
барлоп

@VMai людина, яка сказала, що на superuser.com/questions/141772/… не подала прикладу, але я думаю, що він мав на увазі включення вихідних з'єднань, пакетів, що надходять у них. Це відрізняється від концепції, що "ntpd вимагає повного двонаправленого доступу до привілейованого порту UDP 123. ...", що звучить як вхідне з'єднання. Якщо він хотів дозволити вхід та вихід із використанням пов'язаних / встановлених, тоді йому знадобляться 4 правила. 2 для вхідних з'єднань, 2 для вихідних з'єднань.
барлоп

Відповіді:


10

Вам потрібно дозволити порти NTP для вхідного трафіку лише в тому випадку, якщо ви працюєте як сервер, що дозволяє клієнтам синхронізуватися з вами.

В іншому випадку, існування стану NTP автоматично визначає, чи блокується вхідний пакет NTP блокується чи дозволений існуючим станом брандмауера, який ми ініціювали.

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

iptables -A INPUT -m стан - держава Встановлено, ЗВ'ЯЗАНО -j ACCEPT

Будь ласка, дайте мені знати, чи правильні правила iptables. Я не маю досвіду роботи з iptables. Мій клієнт NTP залишається синхронізованим на моєму маршрутизаторі pfSense з лише вихідним правилом дозволу, оскільки pfSense є брандмауером, що створює стан.


1
Це здається розумним! На жаль, я вже не в змозі підтвердити правильність вашої відповіді; проте я прийму це, тому що це здається логічним. Велике дякую!
DuffJ

1

NTP вимагає двонаправленого доступу до порту 123, оскільки NTP RFC визначає наступне щодо вихідного порту клієнта:

Під час роботи в симетричних режимах (1 і 2) це поле повинно містити номер порта NTP PORT (123), призначений IANA.

Оскільки вихідний порт клієнта - 123, коли сервер надсилає відповідь назад, він надсилає його до порту 123. Природно, для того, щоб мати змогу отримати цю відповідь, клієнт повинен дозволити вхідні відповіді на порт 123. Зазвичай відповіді повертаються на деякому ефемерному порту .

Як згадував Бен Кук вище, це потрібно лише при роботі з брандмауером без стану, оскільки стаціонарний брандмауер дозволить відповіді повернутися без явного правила.


0

Я думаю, що найкращим рішенням є включення порту 123 для введення, тільки для ip-адрес, які, як очікується, передасть вашому серверу сигнал ntp.
Всередині конфігураційного файлу ntp /etc/ntp.conf є адреси декількох серверів ntp, на яких повинен вказувати ваш сервер. Ви можете скористатися командою пошуку для пошуку відповідного ip для кожної адреси.

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

Тоді ви можете додати правило до брандмауера сервера:

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

... і так далі.
Це може запобігти пошкодженню вашого сервера будь-якої шкідливої ​​особи.
Я думаю, що це не має ніякого використання, що обмежує вихід.


-1

Зв'язок ntp з сервером на сервер - це джерело та порт призначення 123. Найзручніше явно дозволити, щонайменше, для хостів, на яких ви працюєте з службою ntp.

Ви можете розглянути лише відкриття зовнішнього хоста в Інтернеті, щоб отримати час із сторонніх джерел. Внутрішня служба ntp, що синхронізує це, може стати джерелом для всіх пристроїв. Якщо ці хости присвячені цілі, можлива експозиція обмежена: вони приймають лише ntp трафік і не зберігають інших даних.

Крім того, взагалі не використовуйте зовнішню мережу IP. Наприклад, використовуйте джерело радіо, наприклад, GPS для часу.

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


1
Дякую за цю відповідь, але це не відповідає на запитання. Що робити, якщо я системний адміністратор і хочу відкрити брандмауер, щоб я міг налаштувати внутрішню службу NTP? Здається, ніхто досі не здогадується, чому для NTP потрібен двонаправлений доступ (який набагато небезпечніший, ніж однонаправлений доступ).
DuffJ
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.