|
Аутентификация в сети Когда пользователь работает с консоли компьютера
или с терминала, физически прикрепленного к терминальному порту, модель сессий
является вполне приемлемой. При регистрации пользователя создается сессия, ассоциированная
с данным терминалом, и далее проблем нет. Аналогично нет никаких проблем при подключении
через сеть с коммутацией каналов, например, при "дозвоне" через модем,
подключенный к телефонной сети (конечно же, при условии, что мы доверяем связистам).
Когда соединение разрывается, сессия считается оконченной. В сетях с коммутацией
пакетов, к которым относится большинство современных сетевых протоколов (TCP/IP,
IPX/SPX, ISO/OSI и т. д.), вообще нет физического понятия соединения. В лучшем
случае сетевой протокол предоставляет возможность создавать виртуальные соединения
с "надежной" связью, в которых гарантируется отсутствие потерь пакетов
и сохраняется порядок их поступления. С таким виртуальным соединением вполне можно
ассоциировать сессию, как это сделано в протоколах telnet, rlogin/rsh и ftp.
Протокол telnet Протокол telnet используется для
эмуляции алфавитно-цифрового терминала через сеть. Пользователь устанавливает
соединение и регистрируется в удаленной системе таким же образом, как он регистрировался
бы с физически подключенного терминала. Например, в системах семейства Unix создается
виртуальное устройство, псевдотерминал (pseudotermina/) /dev/ptyXX, полностью
эмулирующее работу физического терминала, и система запускает ту же программу
идентификации пользователя /bin/login, которая используется для физических терминалов.
При окончании сессии соединение разрывается и псевдотерминальное устройство освобождается.
Виртуальные сессии вынуждены полагаться на то, что сетевой протокол обеспечивает
действительно гарантированное соединение, т. е. что никакая посторонняя машина
не может вклиниться в соединение и прослушать его идИ послать свои поддельные
пакеты. Обеспечение безопасности на этом уровне либо требует доверия к сетевой
инфраструктуре физического, канального и сетевого уровней (линиям связи, коммутаторам
и маршрутизаторам), либо сводится к использованию шифрования и/или криптографической
подписи пакетов. В протоколах, использующих датаграммные соединения, средствами
протокола виртуальную сессию создать невозможно. Обычно в этом случае каждый пакет
содержит идентификатор пользователя или сессии, от имени которого (в рамках которой)
этот пакет послан. Такой подход применяется в протоколах работы с файловыми серверами
NFS и NCP (Netware Core Protocol, используемый файловыми серверами Novell Netware).
Датаграммные протоколы оказываются несколько более уязвимы для подделки пакетов
и прочих вредоносных воздействий. Подпись
пакетов в NCP Например, NCP, работающий через датаграммный протокол
IPX, реализует свой собственный механизм поддержки сессий: все пакеты данной сессии
имеют 8-битный номер, и пакеты с неправильными номерами просто игнорируются. Одна
из техник взлома Netware 3.11 (так называемая "Голландская атака") состоит
в посылке в течение короткого времени 256 пакетов с различными номерами — хотя
бы один пакет окажется удачным. Для борьбы с такими действиями в Netware 3.12
была введена криптографическая подпись пакетов в пределах сессии. Проблема
дополнительно усложняется тем обстоятельством, что в сети зачастую взаимодействие
происходит между системами, каждая из которых позволяет одновременную работу нескольких
пользователей. Часто возникает желание требовать от пользователя регистрации только
в одной из систем, а доступ в остальные системы предоставлять автоматически.
Обычно для автоматической регистрации используется модель доверяемых систем (trusted
hosts). Если система В доверяет системе А, то все пользователи, зарегистрированные
на системе А, автоматически получают доступ к системе В под теми же именами (рис.
12.2). Иногда аналогичную возможность можно предоставлять каждому пользователю
отдельно — он сообщает, что при регистрации входа из системы А пароля запрашивать
не надо. Разновидностью модели доверяемых систем можно считать единую базу учетных
записей, разделяемую между машинами. 
Рис. 12.2. Доверяемые системы Межмашинное
доверие в rlogin/rsh Протоколы rlogin/rsh, обеспечивающие запуск отдельных
команд или командного процессора на удаленной системе, используют файл /etc/hosts.equiv
или .rhosts в домашнем каталоге пользователя на удаленной системе. Файл /etc/hosts.equiv
содержит имена всех машин, которым наша система полностью доверяет. Файл .rhosts
состоит из строк формата имя.удаленной.машины имя пользователя
При этом имя.удаленной.машины не может быть произвольным, оно обязано содержаться
в файле /etc/hosts, в котором собраны имена и адреса всех удаленных машин, "известных"
системе. То же требование обязательно и для машин, перечисленных в /etc/hosts.equiv.
Например, пользователь fat на машине
iceman.cnit.nsu.ru набирает команду rlogin -I fat
Indy.cnit.nsu.ru — войти в систему lndy.cnit.nsu.ru
под именем fat. Если домашний каталог пользователя
fat на целевой машине содержит файл .rhosts,
в котором есть строка iceman.cnit.nsu.ru fat, то пользователь
fat получит доступ к системе Indy без набора пароля. Того же эффекта можно добиться
для всех одноименных пользователей, если /etc/hosts.equiv
содержит строку ice man.cnit.nsu.ru Если же fat
наберет команду rlogin -1 root Indy.cnit.nsu.ru,
а в домашнем каталоге пользователя root файла .rhosts
нет или он не содержит вышеприведенной строки, команда rlogin потребует
ввода пароля, независимо от содержимого файла /etc/hosts.equiv. Нужно отметить,
что администраторы обычно вообще не разрешают использовать
rlogin для входа под именем root, потому что этот пользователь является
администратором системы и обладает очень большими привилегиями. Модель
доверяемых систем обеспечивает большое удобство для пользователей и администраторов
и в различных формах предоставляется многими сетевыми ОС. Например, в протоколе
разделения файлов SMB. применяемом в системах семейства СР/М, Linux и др., используется
своеобразная модель аутентификации, которую можно рассматривать как специфический
случай доверяемых систем. Аутентификация
SMB Аутентификация в SMB основана на понятии домена (domain). Каждый
разделяемый ресурс (каталог, принтер и т. д.) принадлежит к определенному домену,
хотя и может быть защищен собственным паролем. При доступе к каждому новому ресурсу
необходимо подтвердить имя пользователя и пароль, после чего создается сессия,
связанная с этим ресурсом. Для создания сессии используется надежное соединение,
предоставляемое транспортным протоколом, — именованная труба NetBEUI или сокет
TCP. Ввод пароля при каждом доступе неудобен для пользователя, поэтому большинство
клиентов— просто запоминают пароль, введенный при регистрации в домене, и при
подключении к ресурсу первым делом пробуют его. Благодаря этому удается создать
у пользователя иллюзию однократной регистрации. Кроме того, если сессия по каким-то
причинам оказалась разорвана, например из-за перезагрузки сервера, то можно реализовать
прозрачное для пользователя восстановление этой сессии. С точки зрения клиента
нет смысла говорить о межмашинном доверии — клиенту в среде SMB никто не доверяет
и вполне справедливо: обычно это система класса ДОС, не заслуживающая доверия.
Однако серверы обычно передоверяют проверку пароля и идентификацию пользователя
выделенной машине, называемой контроллером домена (domain controller). Домен обязан
иметь один основной (primary) контроллер и может иметь несколько резервных (backup),
каждый из которых хранит реплики (периодически синхронизуемые копии) базы учетных
записей. При поступлении запроса на соединение сервер получает у клиента имя пользователя
и пароль, но вместо сверки с собственной базой данных он пересылает их контроллеру
домена и принимает решение о принятии или отказе в аутентификации на основании
вердикта, вынесенного контроллером. Только контроллеры домена хранят у себя
базу данных о пользователях и паролях. При этом основной контроллер хранит основную
копию базы, а резервные серверы — ее дубликаты, используемые лишь в тех случаях,
когда основной сервер выключен или потерян. Благодаря тому, что все данные собраны
в одном месте, можно централизованно управлять доступом ко многим серверам, поэтому
домены представляют неоценимые преимущества при организации больших многосерверных
сетей. С точки зрения безопасности доверяемые системы имеют два серьезных
недостатка. - 1. Прорыв безопасности на одной из систем
означает, по существу, прорыв на всех системах, которые доверяют первой (рис.
12.3).
- 2. Возникает дополнительный тип атаки на систему
безопасности: машина, которая выдает себя за доверяемую, но не является таковой
(рис. 12.4).

Рис.
12.3. Прорыв безопасности в сети с доверяемыми системами 
12.4.
Имитация доверяемой системы Первая проблема является практически неизбежной
платой за разрешение автоматической регистрации. Наиболее ярко эта проблема была
проиллюстрирована упомянутым выше "Червем Морриса" (КомпьютерПресс 1991],
который, проникнув в одну из систем, использовал содержимое файлов .rhosts и /etc/hosts.equiv
для проникновения в доверяющие системы, полагаясь на то, что межсистемное доверие
обычно делают взаимным. Поэтому в средах с высокими требованиями к безопасности
часто стремятся ограничить число доверяемых систем, подобно тому, как отсеки кораблей
разделяют водонепроницаемыми переборками. Вторая проблема может быть отчасти
решена использованием средств, пре-достаапяемых сетевыми протоколами, например,
привязкой всех логических имен доверяемых систем к их сетевым адресам канального
уровня. В протоколах TCP/IP это может быть сделано с использованием протокола
аrр (Address Resolution Protocol — протокол разрешения адресов), однако надежда
на это слаба: многие сетевые карты имеют настраиваемые адреса, а многие реализации
сетевых протоколов допускают отправку пакетов с поддельным адресом отправителя.
Более изощренный и намного более надежный метод основан на использовании алгоритма
двухключевого шифрования RSA или родственных ему механизмов. |