NIS — это сокращение от Network Information Service (Служба сетевой информации). Это RPC-служба ypserv, которая совместно с portmap и другими связанными службами распространяет карты имён, паролей и другую важную информацию компьютерам своего домена.
NIS-сервер состоит из нескольких приложений. Среди них следующие:
/usr/sbin/rpc.yppasswdd — так называемая служба yppasswdd, позволяющая пользователям менять свои пароли в NIS.
/usr/sbin/rpc.ypxfrd — служба ypxfrd, отвечающая за передачу карты NIS по сети.
/usr/sbin/yppush — приложение, реплицирующее изменяемые базы данных NIS на несколько серверов.
/usr/sbin/ypserv — демон NIS сервера.
Система NIS по современным стандартам довольно незащищённая. В ней отсутствуют механизмы проверки подлинности компьютера, а вся информация передаётся по сети в открытом виде, включая хэши паролей. Поэтому, настраивая в сети NIS, необходимо быть предельно осторожными. И что ещё больше усложняет ситуацию, стандартная конфигурация NIS небезопасна по природе.
Всем, кто собирается реализовать NIS сервер, рекомендуется сначала защитить службу portmap, как описывалось в разделе 5.2 Защита Portmap, а затем заняться следующими вопросами.
Так как NIS передаёт по сети важную информацию в открытом виде, важно, чтобы работающая служба была защищена брандмауэром и находилась в защищённой сети. Если информация NIS передаётся по незащищённой сети, она может быть перехвачена. Организовав сеть с учётом этих замечаний, вы избавляетесь от различных дыр в безопасности.
Все компьютеры в домене NIS могут с помощью команд получать информацию с сервера без проверки, если пользователь знает DNS имя узла NIS сервера и имя его NIS домена.
Например, если кто-то подключит к сети ноутбук или прорвётся в сеть снаружи (и умудрится подставить внутренний IP адрес), следующая команда покажет карту /etc/passwd:
ypcat -d <NIS_domain> -h <DNS_hostname> passwd |
Если взломщик имеет права root, он может получить файл /etc/shadow, выполнив следующую команду:
ypcat -d <NIS_domain> -h <DNS_hostname> shadow |
Замечание | |
---|---|
Если используется Kerberos, файл /etc/shadow в карте NIS не хранится. |
Чтобы усложнить для взломщика доступ к картам NIS, выберите для DNS имени узла случайную строку, например, o7hfawtgmhwg.domain.com. Аналогично выберите другое случайное имя для домена NIS. Это значительно усложнит доступ к NIS серверу для взломщика.
Если файл /var/yp/securenets пустой или не существует (как в случае установки по умолчанию), NIS принимает подключение из любых сетей. Первое, что следует сделать — задать в этом файле пары «маска сети/сеть», чтобы ypserv отвечал на запросы только из определённых сетей.
Ниже приведён пример записи из файла /var/yp/securenets:
255.255.255.0 192.168.0.0 |
Предупреждение | |
---|---|
Никогда не запускайте NIS сервер, не создав файла /var/yp/securenets. |
Этот приём не защищает от атаки с подменой IP адреса, но, по крайней мере, он ограничивает сети, обслуживаемые NIS сервером.
Всем связанным с NIS службам можно назначить конкретные порты, кроме rpc.yppasswdd — демона, позволяющего пользователям менять свои пароли. Назначив порты двум другим демонам NIS: rpc.ypxfrd и ypserv, вы можете создать правила брандмауэра, чтобы сильнее защитить этих демонов от взломщиков.
Для этого поместите в /etc/sysconfig/network следующие строки:
YPSERV_ARGS="-p 834" YPSERV_ARGS="-p 835" |
Затем можно применить следующие правила IPTables и ограничить сеть, имеющую доступ к этим портам:
iptables -A INPUT -p ALL -s! 192.168.0.0/24 --dport 834 -j DROP iptables -A INPUT -p ALL -s! 192.168.0.0/24 --dport 835 -j DROP |
Подсказка | |
---|---|
Узнать больше о реализации брандмауэра на основе IPTables, вы сможете в главе 7 Брандмауэры. |
Одним из бросающихся в глаза недостатков использования NIS при проверке подлинности является то, что когда пользователь регистрируется на своём компьютере, по сети передаётся хэш пароля из карты /etc/shadow. Если взломщик получит доступ к домену NIS и прослушает сетевой трафик, он может незаметно собирать имена и пароли пользователей. За приемлемое время программа подбора паролей может угадать слабые пароли, и взломщик сможет войти в сеть под именем реального пользователя.
Так как Kerberos использует шифрование с секретным ключом, по сети никогда не передаются хэши паролей, что делает систему намного безопаснее. За дополнительными сведениями о Kerberos обратитесь к главе Kerberos Справочного руководства по Red Hat Enterprise Linux.