NIS имеет большую дыру в защите: файл паролей доступен на чтение кому
угодно. Зная имя домена NIS и адрес его сервера, можно просто попросить
отобразить карту passwd.byname и немедленно
получить зашифрованные пароли всей Вашей системы. Дальше в дело идет
программа crack с хорошим словарем и пароли открыты!
К счастью, этому можно противостоять опцией
securenets. Она просто ограничивает доступ к серверу
NIS некоторыми хостами, основываясь на их IP-адресах или сетевых масках.
Последняя версия ypserv реализует это свойство двумя
способами. Первый полагается на специальный файл конфигурации, названный
/etc/ypserv.securenets, а второй использует файлы
/etc/hosts.allow и
/etc/hosts.deny, с которыми Вы уже столкнулись в
главе 12. Таким образом, чтобы ограничить доступ к
серверу хостами из локальной сети добавьте строку к
hosts.allow:
Это позволит всем компьютерам из IP-сети
172.16.2.0 обращаться к NIS-серверу. Чтобы
закрыть доступ всем остальным (внешним) машинам, допишите в
hosts.deny:
IP-адреса не единственный путь, которым Вы можете определять компьютеры
или сети в hosts.allow и
hosts.deny. Обратитесь за подробностями к
man-странице hosts_access(5). Однако, не следует
использовать в определениях для ypserv
доменные хостов. При их использовании, сервер запросит у сервера DNS
соответствующий IP, а ответ DNS может быть и подделан хакером. Еще хуже,
когда DNS сам запросит карту от NIS, тот в свою очередь вызовет DNS и т.д.
Чтобы настроить securenets с
использованием /etc/ypserv.securenets, нужно
создать файл /etc/ypserv.securenets. Этот файл
конфигурации прост: каждая строка описывает хост или сеть, которые будут
иметь доступ к серверу. Любой адрес, не описанный в этом файле, будет
заблокирован. Строки, начинающиеся с символа # считаются комментариями.
Пример 13-1 показывает простой
/etc/ypserv.securenets:
Пример 13-1. Образец файла /etc/ypserv.securenets
# allow connections from local host -- necessary
host 127.0.0.1
# same as 255.255.255.255 127.0.0.1
#
# allow connections from any host on the Virtual Brewery network
255.255.255.0 172.16.1.0
|
Первая запись в каждой строке задает сетевую маску для этой строки. Вторая
запись определяет адрес соответствующего хоста, к которому маска применяется.
Можно задать маску и адрес явно ключевыми словами
host и
netmask.
Третья опция (если определена) должна задавать для использования
безопасный диспетчер портов (portmapper) вместо обычного
securenets в ypserv.
Безопасный portmapper (portmap-5.0) использует
схему hosts.allow, но предлагает это для всех
RPC-серверов, не только для ypserv. Однако, Вы не
должны использовать опцию securenets и безопасный
диспетчер портов вместе.