Администрирование

↓Как экспортировать файловую систему для передачи по nfs через zfs?

zfs set sharenfs='-maproot=root:wheel ant blob cat dog eye fox gremlin hobbit imp jelly kop leprachaun mumak mbanta' usr/diskless/white

zfs set sharenfs='-maproot=root:wheel ant blob cat dog eye fox gremlin hobbit imp jelly kop leprachaun mumak mbanta' usr/diskless/white

zfs set sharenfs='axp4 shahalam ipoh klang temerloh nilai banting betong ampang cheras pattani blob cat ant dog eye fox gremlin hobbit imp jelly kop leprachaun mumak mbanta' usr/home

↓Классы пользователей и /etc/login.conf

Посмотреть текущий класс пользователя можно командой

pw user show nm -P

После изменения настроек класса (а они находятся в файле /etc/login.conf), вам необходимо пересобрать базу данных логинов /etc/login.conf.db, делается это так:

cap_mkdb /etc/login.conf

В операционной системе FreeBSD, информация из файла /etc/login.conf.db, используется при каждом входе пользователя в систему.

↓Как поставить утилиты из zzzutils?

cd zzzutils
make clean
make
make install

↓Где лежат tu, turun, nam и пр.?

/usr/local/mai/bin

Этот путь следует прописывать всем, кто пользуется этими программами.

↓Как добавить пользователей на всех компьютерах

  1. Сначала нужно завести пользователей на Kuantan'е.

    • Нужен файл, где написаны в каждой строчке логин, фамилия, инициалы (и. о.) и группа студентов через пробел.
    • Нужно подать этот файл на вход скрипту studadd из zzznet-utils. Скрипт выведет шеловские команды для каждого студента типа

      /bin/mkdir -p $(dirname /stud/102188)
      /bin/echo -n "102188 "
      /usr/sbin/pw useradd 102188 -m -c 'Шмелев' -d '/stud/102188' -L stud -w random -k '/usr/local/mai/share/skel/stud' -u 1102188 -g stud -s '/usr/pkg/bin/bash' 2>/dev/null

    • Эти команды можно перенаправить в файлик и запустить этот файл шеллом. Так заведутся пользователи на Куантане с некоторыми паролями, эти пароли не нужно запоминать, они никогда не будут использоваться.

  2. Завести пользователей в раздаваемой на белые и черные компы системе

    • Сервер yp (или nis) публикует passwd для всех компьютеров в домене zzz.umc8.ru (информация из /etc/rc.conf (а также nis нужен для того, чтобы публиковать различные настройки для пользователя, например, тип shell'а, имя пользователя, группу и пр.)

      cd /var/yp/ — заходим в папку с make-файлом nis-а. Make перестраивает файл базы данных nis в соотвтетствии с /etc/masster.passwd
      sudo make MASTER_PASSWD=/etc/master.passwd

  3. Теперь нужно обновить информацию в kerberos. Он нужен для того, чтобы аутентифицировать пользователей. Если nis может раздавать информацию типа группы, фамилии и пр, то kerberos только аутентифицирует пользователей.
    • Для того, чтобы в kerberos завести пользователей, нужно запустить скрипт kadduser.sh (передав ему на вход строку "логин пароль") и то, что он выведет подать на стандартный ввод команде /usr/local/heimdal/sbin/kadmin -l
    • Поэтому в цикле нужно передавать строки из файла с логинами и паролями, и передавать это в kadmin:

      while read u pw; do ./kadduser.sh $u $pw; done < ~/students/110logins-passwds | sudo
      /usr/local/heimdal/sbin/kadmin -l

    • Если пользователь уже существует, повторно kerberos его заводить не будет, а заведет только тех, кого еще нет в kerberos.

↓Как работает Kerberos

Оригинал. Текст исправлен.

Система шифрования Kerberos достаточно сложна и решает ряд задач. Структура сети Kerberos также должна быть рассмотрена более подробно.

Сетевые компоненты Kerberos

Основным компонентом системы Kerberos является KDC (Key Distribution Center). Он отвечает за аутентификацию компьютеров в области, где действуют заданные логины и пароли — realm Kerberos. Обычно область Kerberos совпадает с некоторым доменом или подцоменом. Например, домен threeroomco.com может содержать единственную область Kerberos. В отличие от имен доменов в интернете, имена областей Kerberos чувствительны к регистру символов. Для того чтобы подчеркнуть различия между доменом Internet и областью Kerberos, которая определяет тот же набор компьютеров, принято задавать имена областей символами верхнего регистра, например для threeroomco.com область Kerberos назовется THREEROOMCO.COM. Область Kerberos может занимать не весь домен либо включать компьютеры из нескольких доменов. Если в одном домене находятся две или более области Kerberos, то для их идентификации в начало имени области добавляются дополнительные компоненты, например, REALMl.THREEROOMCO.COM и REALMl.THREEROOMCO.COM.

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

Сервером Kerberos будем называть либо компьютер, на котором выполняется серверная программа Kerberos, либо саму программу, т. е. KDC. Клиент Kerberos - это компьютер либо программа, которые получают билет от сервера Kerberos. Обычно считается, что действия системы Kerberos инициирует пользователья, который отправляет запрос на получение услуг от некоторого сервера приложения (например, сервера печати).

Kerberos предоставляет билеты принципалам (тот, кто хочет аутентифицироваться), в роли которых выступают пользователи либо серверные программы. Для описания принципала применяется идентификатор, состоящий из трех компонентов: основы (primary), экземпляра (instance) и области (realm). Этот идентификатор записывается в формате основа/экземпляр/область. Если билет получает пользователь, основа представляет собой пользовательское имя. В роли принципала может также выступать сервер; в этом случае основой является имя сервера, например ftp.

Экземпляр - не обязательный компонент, он применяется в тех случаях, когда одна и та же основа используется в различных целях. Предположим, что пользователю f luf f упоставлены в соответствие два принципала: один, используемый для решения обычных задач, и второй, предназначенный для выполнения действий по администрированию системы. Для идентификации второго принципала может быть использован экземпляр admin. Если область имеет имя THREEROOMCO.COM, то идентификаторы принципалов будут иметь вид fluffy@THREEROOMCO.COM и flufy/admind@THREEROOMCO.COM.

Задачи, выполняемые Kerberos

Для того чтобы понять работу средств Kerberos, надо рассмотреть задачи, решаемые данной системой. Эти задачи кратко описаны ниже.

  • Обеспечение аутентификации в сети. Чтобы предотвратить неавторизованный доступ к службам, сервер должен иметь возможность идентифицировать пользователей. Кроме того, в некоторых средах важно, чтобы клиент мог идентифицировать серверы. Это исключит работу пользователей с фальшивыми серверами, созданными специально для сбора важной информации. Защита паролей. Многие службы по умолчанию используют незашифрованные пароли. Это создает угрозу безопасности системы, так как незакодированные пароли могут быть перехвачены и использованы для незаконного доступа к ресурсам. В некоторых серверах предпринимается попытка решения данной проблемы путем кодирования паролей, но в Kerberos используется нестандартный подход. Вместо того чтобы передавать пароль в зашифрованном виде, система использует его в качестве ключа для кодирования передаваемых данных. При этом пароль не передается, но данные может получить только тот пользователь, который знает пароль. Многие приложения, использующие пароль для доступа к удаленным системам, предоставляют пользователю возможность сохранения пароля. Такое поведение типично, например, для почтовых серверов (POP и IMAP). Пользоваться этой возможностью крайне нежелательно, так как в случае взлома рабочей станции пароль окажется в руках злоумышленника. При работе в сети возникает также проблема смены пароля. Новый пароль приходится задавать сразу в нескольких программах. Обе проблемы позволяет решить Kerberos.
  • Обеспечение однократной регистрации в сети. Kerberos дает возможность пользователю работать в сети, зарегистрировавшись лишь на своем компьютере. Для обмена с керберизованными приложениями вводить пароль не требуется. В частности, достаточно зарегистрироваться один раз, чтобы получать почту с помощью керберизованной почтовой системы или обращаться к другому компьютеру, на котором выполняется керберизованный сервер регистрации. (Описанные возможности не распространяются на взаимодействие с внешними системами). Срок действия билета, который пользователь получает при вводе пароля, ограничен, поэтому при работе в системе в течение длительного времени приходится вводить пароль повторно. Однако при обращении к серверу в течение времени жизни билета задавать пароль не нужно. Средства Kerberos должны также удовлетворять некоторым требованиям, связанным с технической реализацией системы, но основное влияние на выбор принципа работы Kerberos оказали три описанные выше задачи. При решении их Kerberos использует билеты.

Процесс взаимодействия с сервером

  1. Пользователь, работающий на рабочей станции, собирается воспользоваться некоторыми услугами, для чего вводит имя и пароль.
  2. Рабочая станция (клиент Kerberos) передает имя пользователя KDC и запрашивает TGT (ticket-granting ticket - билет на получение билета). Этот запрос обрабатывается специальным компонентом Kerberos, который называется TGS (ticket-granting service - служба получения билета).
  3. KDC ищет имя пользователя в базе данных. Если имя присутствует в ней, KDC возвращает TGT. В этом билете содержится имя пользователя, которому он предназначен, время выдачи билета и время, в течение которого он остается действительным. KDC кодирует TGT, используя для этого пароль, содержащийся в базе данных, и передает его клиенту.
  4. Клиент получает TGT и расшифровывает его с помощью пароля, введенного пользователем. Если попытка расшифровки оказывается успешной, клиент сохраняет билет для дальнейшей работы. Все действия с билетом остаются прозрачными для пользователя.
  5. Используя данные, содержащиеся в билете, клиент отправляет KDC запрос на получение такого билета, который давал бы возможность взаимодействовать с требуемым сервером. Поскольку данные были успешно расшифрованы, а затем снова зашифрованы, KDC принимает их как корректные и передает серверу новый билет. Этот билет зашифрован паролем целевого сервера (его знают только сервер и KDC) и содержит имя пользователя, инициировавшего запрос, имя службы, доступ к которой должен быть предоставлен, время выдачи билета, время его действия, код сеанса и другую информацию. Код сеанса выполняет роль нового пароля; этот пароль создан KDC и предназначен для совместного использования клиентом и сервером. Для того чтобы уменьшить риск перехвата и незаконного использования информации, устанавливается малое время действия билета.
  6. Клиент принимает билет на получение услуг, но не предпринимает попытки расшифровать его (действия с этим билетом также прозрачны для пользователя).
  7. Клиент передает билет на получение услуг целевому серверу. Этот билет рассматривается как запрос на инициализацию сеанса передачи данных.
  8. Сервер расшифровывает билет, пользуясь для этого паролем. Попытка расшифровки будет успешной только в том случае, если билет был корректно закодирован KDC. Если запрос корректен (билет получен от действительного пользователя, успешно расшифрован и т. д.), сервер использует код сеанса для кодирования ответа клиенту.
  9. Клиент получает ответ сервера. Если данные корректны, клиент предполагает, что сервер аутентифицирован, завершает процедуру установления соединения и начинает передачу информации. Информация передается только в том случае, если от сервера получен допустимый ответ.

С этого момента процесс обмена данными происходит так, как будто система Kerberos не используется, за исключением того, что в составе керберизованных приложений действуют средства кодирования и декодирования данных (в обычных приложениях такие средства отсутствуют). Со временем срок действия TGT и билета на получение услуг истекает, но это вряд ли повлияет на обмен информацией, так как срок действия билетов обычно устанавливается равным нескольким часам. Если же такая ситуация возникла в течение сеанса, билеты должны быть обновлены.

Как видно из описанной выше процедуры, в составе билетов содержатся временные отметки. Если таймеры компьютеров, участвующих во взаимодействии, установлены по-разному, обмен данными может не состояться. В некоторых случаях несоответствие системного времени может привести к снижению уровня безопасности системы. Поэтому необходимо синхронизировать таймеры на всех компьютерах, входящих в состав сети Kerberos. Сделать это можно с помощью сервера NTP (Network Time Protocol - сетевой протокол времени).

↓Как посмотреть состояние винчестеров

zpool status