|
6. Безопасность и NFSЯ ни коим образом не являюсь экспертом в области компьютерной безопасности. Но у меня есть маленький совет для сознающих безопасность. Но будьте предупреждены: это ни в коем случае не полный список относящихся к NFS проблем, и если вы думаете, что вы обезопасились один раз прочитав и выполнив, все что я даю здесь, то я хочу предать вас.
Этот раздел не должен беспокоить вас если вы находитесь в закрытой сети, где вы доверяете всем пользователям, и никто кому вы не доверяете ни может получить доступ к машинам в сети. Например не должно быть dial-соединения в сеть, и не должно быть никакого способа подключиться к сети, в которой вы не доверяете всем. Вы думаете я параноик? Я не параноик во всех областях. Это базовый совет по безопасности. Безопасный требует наличия тщательного и знающего администратора, который знает где найти информацию о текущих и потенциальных проблемах безопасности.
NFS имеет основную проблему в том, что клиент, если не задано будет доверять серверу и наоборот. Это может быть плохо. Это значит, что если запись администратора сервера NFS взломана, то также легко может быть взломана запись администратора клиентской машины. И наоборот. Существует набор полицейских стратегий для этого, к которым мы вернемся.
Что вам необходимо читать -- это консультационные материалы CERT относящиеся к NFS, большинство текстов приведенных ниже связаны с советами, написанными в выпусках CERT. Смотрите ftp.cert.org/01-README для обновленного списка консультаций CERT. Здесь приведены некоторые относящиеся к NFS консультации:
CA-91:21.SunOS.NFS.Jumbo.and.fsirand 12/06/91 Уязвимость в отношении сетевой файловой системы (NFS) Sun Microsystems, Inc. (Sun) и программы fsirand. Эта уязвимость возможна в версиях SunOS 4.1.1, 4.1, and 4.0.3 на всех архитектурах. Заплатки (Patches) доступны для SunOS 4.1.1. Также доступна начальная заплатка для SunOS 4.1 NFS. Sun будет обеспечит полные заплатки для SunOS 4.1 и SunOS 4.0.3 позже. CA-94:15.NFS.Vulnerabilities 12/19/94 Этот консультационный материал обеспечивает измерение безопасности для охраны против против некоторых дыр в безопасности в сетевой файловой системе (NFS). Этот материал выпущен в связи с увеличением случаев взлома машин используя утилиты для использования уязвимых точек. CA-96.08.pcnfsd 04/18/96 Этот материал описывает проблемы с безопасностью в программе pcnfsd (также известной как rpc.pcnfsd). Заплатка для исправления ошибки прилагается.
6.1 Безопасность клиентаНа клиентской стороне мы можем решить, мы не хотим слишком сильно
доверять серверу, это делается несколькими способами с помощью опций
монтирования. Например, мы можем запретить выполнение программ с
установленным битом suid в файловой системе NFS, это делается опцией
монтирования
6.2 Безопасность сервера: nfsdна сервере мы можем решить, что мы не хотим доверять администратору клиента. Мы можем сделать это используя опцию root_squash в файле exports:
/mn/eris/local apollon(rw,root_squash) Теперь, если пользователь с UID 0 на клиенте попытается получить
доступ (чтение, запись, удаление), то файловый сервер выполнит
подстановку UID пользователя `nobody' на сервере. Это означает, что
администратор клиента не сможет получить доступ или изменять файлы,
которые может изменять или иметь доступ только администратор
сервера. Это хорошо и вы должны вероятно использовать опцию
root_squash является установленным по умолчанию для Linux NFSd, для
передачи администраторских полномочий для доступа к файловой системе
используйте опцию
Другая важная вещь, которую необходимо сделать, это проверить, что nfsd проверяет, что все запросы приходят с привелигированного порта. Если он принимает запросы с любого старого порта на клиенте, то пользователь без специальных привелегий может запустить программу, которую легко получить по Internet. Он умеет "говорить" на языке протокола nfs и будет притворяться, что пользователь является любым пользователем, которым он хочет быть. NFSD на Linux делает эту проверку по умолчанию, но для других операционных систем вы должны разрешить эту проверку сами. Это должно быть описано в справочной странице nfsd для вашей операционной системы.
Другая вещь. Никогда не экспортируйте файловую систему для хоста 'localhost' или 127.0.0.1. Доверяйте мне.
6.3 Безопасность сервера: portmapperОснова portmapper, в соединении с nfsd имеют проблему проектирования, которая делает возможной получить файлы с серверов NFS без каких-либо привелегий. К счастью portmapper под Linux использует относительную безопасность против такой атаки, и может быть сделано более безопасной настройкой списка доступа в двух файлах.
Сначала мы отредактируем файл
portmap: ALL
которая запретит доступ всем. Это может быть слишком решительным, так
что мы снова откроем доступ отредактировав файл
portmap: 129.240.223.0/255.255.255.0 в
... eth0 Link encap:10Mbps Ethernet HWaddr 00:60:8C:96:D5:56 inet addr:129.240.223.254 Bcast:129.240.223.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:360315 errors:0 dropped:0 overruns:0 TX packets:179274 errors:0 dropped:0 overruns:0 Interrupt:10 Base address:0x320 ... и
Kernel routing table Destination Gateway Genmask Flags Metric Ref Use Iface ... 129.240.223.0 0.0.0.0 255.255.255.0 U 0 0 174412 eth0 ... (Сетевой адрес находится в первой колонке). Файлы
ВАЖНО: Не помещайте ничего кроме IP НОМЕРОВ в строках portmap в этих файлах. Поиск имен машин может вызвать активность portmap, которая вызовет поиск имен машин, которое вызовет portmap, которое вызовет...
Вышеприведенные вещи должны вызвать переключение вашего сервера. Остающаяся проблема в том, что кто-то взломает бюджет администратора (или загрузит MS-DOS) на машине, которой доверяют и использует эти привелегии для посылки запросов на безопасный порт, как любой пользователь, которым он захочет быть.
6.4 NFS и firewallОчень хорошая идея защитить порты nfs и portmap с помощью firewall на
вашем маршрутизаторе или firewall. Nfsd работает на порту 2049, на обоих
протоколах udp и tcp. Portmapper работает на порту 111, tcp и udp, и mountd
работает на портах 745 и 747, tcp и udp. Обычно. Вы должны проверить номера
портов, используя команду
Если вы хотите использовать NFS сквозь firewall, то есть опции для новых версий NFSd и mountd, для того, чтобы заставить их использовать специфические (нестандартные) порты, которые могут быть открыты в firewall.
6.5 РезюмеЕсли вы используете hosts.allow/deny, root_squash, nosuid и
привилегированные порты в программном обеспечении portmapper/nfs, то вы можете
избежать известных ошибок в nfs и можете чувствовать себя почти в
безопасности. Но все равно: Когда взломщик имеет доступ к вашей сети, то
он/она может добавить странные команды в ваш файл
NFS и portmapper создают комплексную систему и поэтому не полностью невероятно,что новые ошибки будут найдены, либо в основе проекта, либо в реализации, которую мы используем. Также могут быть известные дыры, которые кто-нибудь использует. Но такова жизнь. Чтобы быть в курсе таких вещей, вы должны как минимум читать группы новостей comp.os.linux.announce и comp.security.announce, как абсолютный минимум.
|
|||||||||||||||||
With any suggestions or questions please feel free to contact us |