Файлы /etc/hosts.allow и /etc/hosts.deny#

hosts.allow и hosts.deny - это конфигурационные файлы, используемые для управления доступом к хосту; содержат строки с парами демон-клиент.

Программное обеспечение управления доступом обращается к файлам по следующему сценарию:

  1. Если пара демон-клиент совпадет с записью в /etc/hosts.allow - доступ будет предоставлен.

  2. Если пара соответствует записи в /etc/hosts.deny - доступ будет запрещен.

  3. Если нет совпадений - доступ будет предоставлен.

Если файл контроля доступа не существует, то при обработке приравнивается к пустому; таким образом можно отключить контроль доступа.

Правила управления доступом:

  • каждый файл управления доступом состоит из нуля или более строк текста;

  • строки обрабатываются в порядке появления;

  • поиск завершается при нахождении совпадения;

  • символ новой строки игнорируется, если перед ним стоит обратная косая черта; можно разбивать длинные строки для облегчения редактирования;

  • пустые строки или строки, начинающиеся с # (комментарии), игнорируются;

  • остальные строки записываются в формате:

    daemon_list : client_list < : shell_command >
    

    Где:

    • daemon_list - один/несколько имен процессов-демонов или подстановочных знаков;

    • client_list - один/несколько имен хостов, адресов хостов, подстановочных знаков, сопоставляемых с именем или адресом хоста клиента;

    • shell_command - команда (необязательно);

  • элементы списка должны быть разделены пробелами и/или запятыми;

  • за исключением запросов в сетевой группе NIS (YP), проверки контроля доступа не зависят от регистра.

Используемые подстановочные знаки:

  • ALL - все совпадает;

  • LOCAL - любой хост без точки в имени соответствует;

  • UNKNOWN - любой пользователь с неизвестным именем и любой хост с неизвестным адресом соответствуют;

  • KNOWN - любой пользователь с неизвестным именем и любой хост с неизвестным адресом соответствуют;

  • PARANOID - любой хост, имя которого не совпадает с его адресом, соответствует.

Важно

Используйте шаблоны UNKNOWN, KNOWN с осторожностью, поскольку имена хостов могут быть недоступны из-за временных проблем с сервером имен, а сетевой адрес может быть недоступен, если программное обеспечение по каким-то причинам не определяет, к какому типу сети оно подключено.

Примеры записей#

  • Доступ запрещен по умолчанию, разрешен только явно авторизованным хостам; политика запрета реализована посредством записи в файле /etc/hosts.deny:

    ALL: ALL
    

    Явно авторизованные хосты перечислены в файле /etc/hosts.allow:

    ALL: LOCAL @some_netgroup
    ALL: .foobar.edu EXCEPT terminalserver.foobar.edu
    

    Где:

    • первое правило (первая строка) разрешает доступ с хостов в локальном домене (нет точки в имени хоста) и от членов группы сети some_netgroup;

    • второе правило разрешает доступ со всех хостов в домене foobar.edu, за исключением (EXCEPT) terminalserver.foobar.edu.

  • Доступ разрешен по умолчанию, запрещен только явно указанным хостам - в этом случае файл /etc/hosts.allow можно опустить, перечислив явно неавторизованные хосты в файле /etc/hosts.deny:

    ALL: some.host.name, .some.domain
    ALL EXCEPT in.fingerd: other.host.name, .other.domain
    

    Где:

    • первое правило запрещает указанным хостам и доменам использовать все сервисы;

    • второе правило разрешает запросы finger от указанных хостов и доменов.