5.3. Защита NIS

NIS — это сокращение от Network Information Service (Служба сетевой информации). Это RPC-служба ypserv, которая совместно с portmap и другими связанными службами распространяет карты имён, паролей и другую важную информацию компьютерам своего домена.

NIS-сервер состоит из нескольких приложений. Среди них следующие:

Система NIS по современным стандартам довольно незащищённая. В ней отсутствуют механизмы проверки подлинности компьютера, а вся информация передаётся по сети в открытом виде, включая хэши паролей. Поэтому, настраивая в сети NIS, необходимо быть предельно осторожными. И что ещё больше усложняет ситуацию, стандартная конфигурация NIS небезопасна по природе.

Всем, кто собирается реализовать NIS сервер, рекомендуется сначала защитить службу portmap, как описывалось в разделе 5.2 Защита Portmap, а затем заняться следующими вопросами.

5.3.1. Проектируйте сеть аккуратно

Так как NIS передаёт по сети важную информацию в открытом виде, важно, чтобы работающая служба была защищена брандмауэром и находилась в защищённой сети. Если информация NIS передаётся по незащищённой сети, она может быть перехвачена. Организовав сеть с учётом этих замечаний, вы избавляетесь от различных дыр в безопасности.

5.3.2. Используйте имя домена 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 серверу для взломщика.

5.3.3. Отредактируйте файл /var/yp/securenets

Если файл /var/yp/securenets пустой или не существует (как в случае установки по умолчанию), NIS принимает подключение из любых сетей. Первое, что следует сделать — задать в этом файле пары «маска сети/сеть», чтобы ypserv отвечал на запросы только из определённых сетей.

Ниже приведён пример записи из файла /var/yp/securenets:

255.255.255.0     192.168.0.0

ПредупреждениеПредупреждение
 

Никогда не запускайте NIS сервер, не создав файла /var/yp/securenets.

Этот приём не защищает от атаки с подменой IP адреса, но, по крайней мере, он ограничивает сети, обслуживаемые NIS сервером.

5.3.4. Назначение статических портов и использование правил IPTables

Всем связанным с 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 Брандмауэры.

5.3.5. Используйте проверку подлинности Kerberos

Одним из бросающихся в глаза недостатков использования NIS при проверке подлинности является то, что когда пользователь регистрируется на своём компьютере, по сети передаётся хэш пароля из карты /etc/shadow. Если взломщик получит доступ к домену NIS и прослушает сетевой трафик, он может незаметно собирать имена и пароли пользователей. За приемлемое время программа подбора паролей может угадать слабые пароли, и взломщик сможет войти в сеть под именем реального пользователя.

Так как Kerberos использует шифрование с секретным ключом, по сети никогда не передаются хэши паролей, что делает систему намного безопаснее. За дополнительными сведениями о Kerberos обратитесь к главе Kerberos Справочного руководства по Red Hat Enterprise Linux.