
Я запускаю сервер, который, помимо прочего, использует tinydns для DNS и axfrdns для обработки запросов на передачу от нашего вторичного DNS (другой системы). Я понимаю, что tinydns использует порт 53 на UDP, а axfrdns использует порт 53 на TCP.
Я настроил axfrdns так, чтобы разрешать соединения только с моего согласованного вторичного хоста. Я запускаю logcheck для мониторинга своих журналов и каждый день вижу ложные соединения на порту 53 (TCP) с, казалось бы, случайных хостов. Обычно они оказываются соединениями ADSL.
Мой вопрос: являются ли эти запросы невинными или представляют угрозу безопасности? Я с радостью блокирую повторных нарушителей с помощью iptables, но не хочу блокировать невиновных пользователей одного из веб-сайтов, которые я размещаю.
Спасибо, Даррен.
решение1
Я предполагаю, что вы используете сервер как полномочный DNS-сервер для доменного имени. Если это так, то любому клиенту, которому нужно будет разрешить имя, на которое у вашего сервера есть полномочия, нужно будет использовать только UDP. TCP должен использоваться для передачи зон.
И я также предполагаю, что вы не хотите, чтобы мир мог делать передачи зон. Хотя сами по себе они не представляют угрозы безопасности, передачи зон обычно разрешены только для вторичных/резервных DNS-серверов. Большинство программ DNS также имеют ACL для контроля того, какому серверу разрешено делать передачи зон, так что у вас также есть второй метод ограничения этого. Но поскольку я вижу безопасность как разрешение только того, что необходимо, я предлагаю вам заблокировать TCP на порту 53 для хостов, которым не нужно делать передачи зон от вас.
В качестве примечания, tcp-соединения от случайных adsl-хостов на tcp-порту 53 имеют злонамеренные намерения. Это потому, что ни один законный клиент не должен делать зонные передачи от вас. Они могут пытаться получить доступ к конфиденциальной информации, связанной с вашей сетью, или использовать уязвимости определенного программного обеспечения DNS.
Хотя это не повод для паранойи, об этом следует знать.
решение2
TCP — этонетиспользуется только для зонных передач.
TCP — это резервный вариант по умолчанию, используемый DNS-клиентами, если ваш DNS-сервер когда-либо отправит обратно усеченный (TC=1) UDP-ответ. Это может произойти, если вы обслуживаете какие-либо данные, превышающие 512 байт в одном пакете.
Если вы используете DNS-сервер, то ондолженпринимать TCP-соединения от DNS-клиентов, и при этом нет никакого неотъемлемого риска для безопасности. Существует очень небольшой риск DoS-атак на DNS-сервер, но это справедливо для любой публичной службы.
Видетьчерновик-ietf-dnsext-dns-tcp-требованиякоторый должен быть опубликован в виде RFC в течение следующего месяца.
ВидетьRFC5966Больше подробностей.
Отказ от ответственности: я написал этот RFC.
решение3
Единственное, что должно использовать ваш хост в качестве DNS-сервера, это
- локальный хост
- машины в вашей сети, для которых вы установили этот хост в качестве DNS-сервера
Самый простой способ заблокировать "все остальное" - отключить прослушивание сервисом этого адреса. Если ваши собственные устройства находятся за пределами "вашей сети", используйте правила брандмауэра ( iptables
или что-то еще), чтобы принимать соединения только с вашего внешнего сетевого адреса(ов). Если они не исправлены, вам может понадобиться VPN или другой безопасный туннель, чтобы переместить внешние хосты "внутрь вашей сети".
Помните, что произвольные DNS-запросы к вашему внутреннему серверу имен могут потенциально выдать всю вашу сеть внешней стороне и либо представить вектор атаки, либо раскрыть информацию, к которой вы бы предпочли не предоставлять доступ остальному миру. «Случайное ADSL-подключение» может легко оказаться машинами зомби-ботнета, используемыми для планирования чего-то отвратительного против вас.
решение4
Существует множество рисков безопасности при открытии входящего TCP на сервер имен — любой, кто не утверждает этого, не в своем уме. Просто взгляните на историю компрометации корня — большинство из них делается с использованием TCP в сочетании с UDP. Старый MUST and SHOULD RFC был создан людьми, которые разбираются в безопасности. Если у вас есть зоны DNS, не использующие TC=1 бит (или превышающие 512 байт) — не включайте входящий TCP, пусть это сделают идиоты в будущем.