Вопрос или проблема
В моем /etc/hosts.deny перечислены несколько доменов известных сканеров/ботов, которые не имеют добрых намерений или, по крайней мере, вызывают бессмысленный трафик, постоянно сканируя мой сервер.
Таким образом, одна строка там для примера выглядит так:
ALL : .privatelayer.com, .hdrn.nu, .internet-census.org, .internet-albedo.net, .onyphe.net, .binaryedge.ninja, .censys-scanner.com, .internet-measurement.com, .internettl.org, .shodan.io, .inspici.com, 88.149.177.205, .hadrian.io
Но теперь, когда я посмотрел в /var/log/auth.log, я могу найти записи такого типа
warning: /etc/hosts.deny, line 18: host name/address mismatch: 141.255.166.90 != hostedby.privatelayer.com
Более того, IP 141.255.166.90 все еще имеет доступ к моему серверу, запись, кажется, не оказывает никакого эффекта.
И когда я проверяю этот IP, получаю следующий результат:
nslookup 141.255.166.90
90.166.255.141.in-addr.arpa name = hostedby.privatelayer.com.
Так почему же он игнорирует мою запись “.privatelayer.com”? Разве эта запись не должна действовать как подстановочный знак и охватывать также “hostedby.privatelayer.com”?
Спасибо!
Я советую использовать межсетевые экраны, такие как iptables или firewalld.
Чтобы блокировать входящий трафик вместо добавления записей в hosts.deny.
Современные сервисы, такие как nginx, httpd или приложения на Node.js, не используют TCP Wrappers.
Файлы /etc/hosts.deny и /etc/hosts.allow являются частью TCP Wrappers (libwrap), которые работают только с сервисами, скомпилированными с поддержкой этой библиотеки, такими как:
sshd
vsftpd
telnetd
xinetd services
Ответ или решение
Вопрос, который вы задали, касается использования файлов /etc/hosts.deny
и /etc/hosts.allow
для управления доступом к вашему серверу. Это часть системы, известной как TCP Wrappers. Проблема, которую вы описали — это несоответствие в именах хостов (host name/address mismatch), что приводит к тому, что попытки заблокировать определенные домены и IP-адреса не работают должным образом.
Теория: Как работают TCP Wrappers
TCP Wrappers — это механизм для контроля доступа к интернет-сервисам, который работает на уровне приложений. Он контролирует доступ, основываясь на информации из файлов /etc/hosts.allow
и /etc/hosts.deny
. Основной задачей этих файлов является фильтрация входящих соединений, управляемых через библиотеки, поддерживающие TCP Wrappers.
1. Файл /etc/hosts.allow
: Этот файл проверяется первым и содержит правила доступа для разрешённых хостов и доменов.
2. Файл /etc/hosts.deny
: Проверяется вторым, он содержит правила для запрета доступа, если хост или домен не был разрешён в /etc/hosts.allow
.
Однако существует ряд ограничений и нюансов, которые важно учитывать:
-
Поддержка только определённых демон-сервисов: Не все современные сервисы поддерживают TCP Wrappers. Например, веб-серверы, такие как Nginx или Apache, не используют эту технологию.
-
Проблемы с разрешением имён: Иногда может возникнуть ситуация, когда IP-адрес не совпадает с именем хоста, вероятно, из-за особенностей обратного разрешения DNS (reverse DNS lookup).
Пример: Разрешение доменных имён и проблема несоответствия
Ваш пример ‘ALL : .privatelayer.com’ предполагает использование подстановочного знака для блокировки всех поддоменов privatelayer.com. Но предупреждение в /var/log/auth.log
указывает на несоответствие IP-адреса и доменного имени, что означает, что TCP Wrappers не может успешно выполнить обратное разрешение IP-адреса до ожидаемого доменного имени.
Ваш запрос nslookup
возвращает "hostedby.privatelayer.com" для IP 141.255.166.90, что и вызывает этот конфликт. Это проблема, потому что механизм TCP Wrappers ожидает точное соответствие или успешный исход DNS-запроса.
Приложение: Рекомендации по управлению доступом
Учитывая актуальные проблемы и ограничения TCP Wrappers, в современных условиях лучше использовать более надёжные и гибкие решения:
-
Используйте брандмауэры:
- iptables или firewalld: Эти инструменты предоставляют более широкий контроль над входящим и исходящим трафиком. Вы можете настроить правила, которые будут блокировать трафик на базовом уровне обмена данными через сеть.
- Например, для блокировки IP-адреса можно использовать:
iptables -A INPUT -s 141.255.166.90 -j DROP
-
Настройка на уровне приложений:
- Некоторые серверные приложения, такие как Nginx и Apache, имеют свои собственные механизмы фильтрации. Это позволяет блокировать доступ по доменным именам и IP-адресам непосредственно в настройках сервиса.
-
Мониторинг и логирование:
- Важно отслеживать трафик, который приходит на ваш сервер, и анализировать логи для выявления подозрительных действий. Это позволяет своевременно реагировать на угрозы.
-
Использование современных инструментов защиты:
- Рассмотрите возможность использования более современных систем обнаружения и предотвращения вторжений (IPS/IDS).
-
Обновление и поддержка всех сервисов:
- Убедитесь, что все используемые программы и сервисы обновлены до последних версий, и разработчики этих сервисов предоставляют поддержку и обновления для использования современных стандартов безопасности.
Понимание этих рекомендаций и их применение поможет вам более эффективно защитить ваш сервер от нежелательного сетевого трафика и угроз.