Редактирование файла /etc/lpd.perms
Редактирование файла /etc/lpd.perms
Файл /etc/lpd.perms управляет доступом к системе печати в целом. Файлы lpd.perms могут находиться также в каталогах спулинга для отдельных очередей (/var/spool/lpd/имя_очереди). Если такие файлы присутствуют, они осуществляют контроль за конкретными очередями, в то время как в файле /etc/lpd.perms указываются глобальные опции.
Независимо от расположения файла lpd.perms, в нем содержатся пять типов записей. Комментарии начинаются с символа #. В отличие от файла /etc/hosts.lpd, вы можете включать комментарии в строку после основной команды. Остальные четыре типа записей приведены ниже.
DEFAULT ACCEPT
DEFAULT REJECT
ACCEPT [ключ=значение[, значение]* ]*
REJECT [ключ = значение [, значение]* ]*
Первые два типа записей задают политику системы по умолчанию, т. е. общие правила по предоставлению или запрету доступа. В большинстве пакетов LPRng, поставляемых в составе дистрибутивных версий Linux, в файле /etc/lpd.perms содержится строка DEFAULT ACCEPT. Для сравнения, пакеты BSD LPD по умолчанию разрешают доступ только для узла localhost, или 127.0.0.1 (т. е. для компьютера, на котором выполняется данное программное обеспечение). Таким образом, при настройке системы печати LPRng желательно уточнить политику доступа, используя для этого опции ACCEPT и REJECT.
Опции ACCEPT и REJECT задают типы обращений, которые сервер должен соответственно принимать или отвергать. За именем опции следует один из ключей, указанных в столбце Key табл. 9.2, и значения, заданные в остальных столбцах этой таблицы. Столбец Connect определяет способность устанавливать соединения. Столбцы Job Spool и Job Print указывают на возможность передавать задание спулеру и выводить их на печать. В столбцах lpq, lprm и lрс указано, могут ли выполняться задачи, которыми в обычных условиях управляют утилиты с этими именами. В большинстве случаев наличие одной из этих возможностей означает наличие их всех (по крайней мере, тех, которые имеют смысл в конкретном контексте). Некоторые значения несовместимы с определенными ключами (они отмечены в табл. 9.2 символом —). Для того чтобы изменить значение на обратное, надо указать перед ним NOT. IP-адрес может определять всю сеть, после него надо указать символ / и задать маску подсети.
Таблица 9.2. Ключи и их значения, используемые при формировании файла lpd.perms
Key Connect Job Spool Job Print lpq lprm lpc SERVICE X R P Q M С или S USER — Имя пользователя Имя пользователя Имя пользователя Имя пользователя Имя пользователя HOST Удаленный узел Имя узла Имя узла Имя узла Имя узла Имя узла GROUP — Имя пользователя Имя пользователя Имя пользователя Имя пользователя Имя пользователя IP IP-адрес удаленного узла IP-адрес узла IP-адрес узла IP-адрес удаленного узла IP-адрес узла IP-адрес узла PORT Номер порта Номер порта — Номер порта Номер порта Номер порта REMOTEUSER — Имя пользователя Имя пользователя Имя пользователя Имя пользователя Имя пользователя REMOTEHOST Удаленный узел Удаленный узел Узел Удаленный узел Удаленный узел Удаленный узел REMOTEGROUP — Имя пользователя Имя пользователя Имя пользователя Имя пользователя Имя пользователя REMOTEIP IP-адрес удаленного узла IP-адрес удаленного узла IP-адрес узла IP-адрес удаленного узла IP-адрес удаленного узла IP-адрес удаленного узла CONTROLLINE — Шаблон Шаблон Шаблон Шаблон Шаблон PRINTER — Имя принтера Имя принтера Имя принтера Имя принтера Имя принтера FORWARD — — — — — — SAMEHOST — — — — — — SAMEUSER — — — — — — SERVER — — — — —Опции, предназначенные для контроля доступа, являются достаточно сложными, поэтому имеет смысл пояснить их на конкретных примерах. Рассмотрим следующие строки, входящие в состав стандартного файла /etc/lpd.perms:
ACCEPT SERVICE=M SAMEHOST SAMEUSER
ACCEPT SERVICE=M SERVER REMOTEUSER=root
REJECT SERVICE=M
В этих трех строках указано, кто может использовать утилиту lprm для удаления заданий. В каждой строке содержится опция SERVICE=M, которая означает, что строка соответствует функциям lprm. Это соответствие можно проследить по строке SERVICE табл. 9.2. В первой из указанных трех строк содержатся также опции SAMEHOST и SAMEUSER, которые указывают на то, что команда принимается только в том случае, если она передана с того же компьютера, что и задание на печать, и от того же пользователя, который является владельцем этого задания. В состав второй строки включены опции SERVER и REMOTEUSER=root. Они означают, что пользователь, зарегистрированный на сервере как root, имеет право удалять задания. Последняя строка запрещает обработку прочих запросов, поступающих от lprm. (LPRng просматривает файл lpd.perms до тех пор, пока не будет найдена опция, которая соответствовала бы поступившей команде. В данном случае две записи ACCEPT SERVICE=M предшествуют записи REJECT SERVICE=M, поэтому опции ACCEPT имеют преимущество перед опцией REJECT.)
Как было сказано ранее, во многих случаях система LPRng по умолчанию настраивается так, чтобы она принимала обращения с любого узла. Подобная конфигурация недопустима с точки зрения безопасности, так как любой внешний пользователь может запустить задание на печать, в результате чего будут расходоваться бумага и ресурсы принтера. Кроме того, при обнаружении недостатков в защите LPRng неограниченный доступ к этой системе предоставит дополнительную возможность для взлома принтера. Исходя из этих соображений возможности пользователей по обращению к серверу печати необходимо ограничить. Сделать это можно с помощью брандмауэра (вопросы настройки брандмауэра будут рассмотрены в главе 25). Кроме того, я настоятельно рекомендую вам принять дополнительные меры по защите самой системы LPRng. Предположим, что вы настраиваете сервер печати, который должен обрабатывать задания, переданные из сети 172.22.0.0/16, и с компьютера, на котором установлен сервер; обращения с других узлов должны отвергаться. Сделать это можно с помощью следующих записей:
ACCEPT SERVICE=X SERVER
REJECT SERVICE=X NOT REMOTEIP=172.22.0.0/16
Данные строки ограничивают способность устанавливать соединения с сервером, а следовательно, возможность передавать задания на печать и выполнять прочие действия. Первая строка разрешает устанавливать соединения при обращении с сервера (эти обращения поступают с интерфейса, который имеет адрес 127.0.0.1, поэтому использование REMOTEIP=127.0.0.1 вместо SERVER привело бы к аналогичному результату). При отсутствии этой строки следующая запись блокировала бы обращения с локального компьютера, что в данном случае нежелательно. Вторая строка отвергает все попытки установить соединения, кроме тех, которые предпринимаются компьютерами, принадлежащими сети 172.22.0.0/16. Если бы у вас возникла необходимость принимать обращения из нескольких сетей, вам бы пришлось включить перед опцией REJECT еще одну опцию ACCEPT и указать для нее адрес дополнительной сети, компьютеры которой имели бы право устанавливать соединения с сервером.