"Pluggable Authentication Modules для Linux набор общедоступных библиотек, которые дают возможность локальному администратору системы выбрать, как прикладные программы опознают пользователей. Но что это фактически означает? Например; берите программу login, когда пользователь соединяется с tty (через последовательный порт или по сети) программа отвечает на обращение (getty для последовательных линий, telnet или SSH для сетевых подключений) и запускает программу login. Она обычно запрашивает username, сопровождаемый паролем, который сравнивается с данными файла /etc/passwd. Это прекрасно, пока Вы не поставите новую систему удостоверения и захотите использовать это. Вы будете должны перетранслировать login (и любые другие приложения, которые будут делать удостоверение через новый метод) так, чтобы они поддерживали новую систему. Здесь возможны ошибки и досадные неожиданности.
PAM представляет промежуточный уровень между прикладной программой и фактическим опознавательным механизмом. Как только программа скомпилирована с поддержкой PAM, любые опознавательные методы, поддерживаемы PAM, будут пригодны для использования программой. В дополнение к этому PAM может обрабатывать данные сеанса, что другие механизмы делают не очень хорошо. Например, используя PAM Вы можете легко отвергать доступ систему нормальных пользователей между 6pm и 6am. По умолчанию Red Hat и новые версии Debian поддерживают PAM (см. ниже таблицу PAMified-систем). Таким образом на системе с PAM все, что нужно для затенения паролей: преобразовать файлы паролей и групп и добавить несколько строк в файлы настройки PAM. По существу, PAM дает Вам много гибкости для идентификации пользователя, и будет поддерживать другие свойства в будущем типа цифровых сигнатур. Этот вид гибкости будет требоваться, если Linux должен быть операционной системой класса предприятия. Дистрибутивы без поддержки PAM можно сделать таковыми, но требуется много усилий (Вы должны перетранслировать все Ваши программы с поддержкой PAM, установить PAM и так далее). PAM обычно приходит с полной документацией, и если Вы ищете хороший краткий обзор, Вы должны посетить http://www.sun.com/software/solaris/pam.
Другие выгоды PAM в том, что Вы можете теперь использовать NT-домен для аутенфикации пользователей, что дает возможность связывать Linux автоматизированные рабочие места с существующей Microsoft-сетью без того, чтобы покупать NIS/NIS+ для NT и проходить кошмар ее установки.
Дистрибутив | Версия | Поддержка PAM |
Red Hat | 5.0, 5.1, 5.2, 6.0 | Полная |
Debian | 2.1 | Yes |
Caldera | 1.3, 2.2 | Полная |
TurboLinux | 3.6 | Полная |
SuSE | 6.2 | Yes |
Имеется большее количество дистрибутивов с поддержкой PAM, которые здесь не перечислены, пожалуйста, сообщите мне о них.
http://www.jdimedia.nl/igmar/pam
http://www.linuxnet.com/applications/applications.html
http://rpmfind.net/linux/RPM/pam_smb.html
http://www.csn.ul.ie/~airlied/pam_smb
Во всех UNIX-подобных ОС имеются несколько констант, и одна из них файл /etc/passwd, и как он работает. Для удостоверения пользователя, Вы нуждаетесь (минимально) в некотором подобии файла с соответствием UID username, GID groupname, паролями для пользователей и другой информации. Проблема с этим состоит в том, что каждый нуждается в доступе к passwd файлу! То есть, зашифрованные пароли доступны всем. Раньше было просто: зашифровал пароль и порядок. При входе введенный пароль шифровался и сравнивался с зашифрованной информацией в файле паролей. Если совпал, то это либо пользователь. либо хакер. Теперь, когда мощности систем возросли на порядки, уже можно попробовать шифровать слова, сравнивать их с зашифрованными, и таким способом за разумное время найти пароль. Называется "метод грубой силы" (brute force). Есть несколько решений такой проблемы:
Многие OS применяют первое решение, Linux использует второе, оно получило название теневых паролей. В файле паролей Ваш пароль просто заменен на символ 'x', который сообщает, чтобы система проверила пароль по теневому файлу. Любой может читать файл passwd, но только root имеет доступ для чтения к теневому файлу (то же самое делается и с файлом group). Кажется достаточно простым, но до недавнего времени теневые пароли были кошмаром. Вы были должны перетранслировать все Ваши программы, которые проверяли пароли (login, ftpd, и много-много других. Вы даже не представляете сколько, пока не начнете). Но теперь проблема легко решаема в системах с поддержкой PAM.
Чтобы запустить теневые пароли, Вы должны сделать две вещи. Сначала надо внести правки в файлы паролей, выделив пароли в отдельный файл. Затем пойдет более сложная задача. Вы должны удостовериться, что все Ваши программы имеют поддержку теневых паролей, которая может быть КРАЙНЕ важна.
Поскольку Red Hat имеет PAM, все, что Вы должны сделать, чтобы запустить новую опознавательную схему это, добавить модуль PAM, который понимает ее и отредактировать файл конфигурации для любой программы (скажем, login), чтобы она использовала нужный модуль. Никакого перетранслирования, и минимальное количество суеты, правильно? В Red Hat 6.0 Вы можете указать опцию в течение установки, чтобы выбрать теневые пароли, или Вы можете добавить их позже через утилиты pwconv и grpconv, которые входят в пакет shadow-utils. Большинство других дистрибутивов также имеет поддержку теневых паролей. Иногда пароли даже при использовании затенения могут оказаться в файле /etc/passwd стараниями программ, не поддерживающими затенения. Следите, чтобы такого не было.
В Linux пароли хранятся в зашифрованном виде, однако это не делает их невскрываемыми. Вы не можете расшифровать пароль, однако Вы можете шифровать список слов и сравнивать их. Если результаты соответствуют, Вы нашли пароль! Даже с теневым файлом паролей пароли все еще доступны пользователю root, и если Вы неправильно написали скрипт или программу, которые выполняются как root (например, www CGI-скрипт), файл пароля может быть отыскан нападавшими. Большинство программ выскрывания паролей позволяет работать параллельно на многих машинах, что ускрояет задачу.
Эффективный cracker (открывашка) для паролей доступен на http://www.false.com/security/john.
Первоначальный широко распространенный вскрыватель (насколько я знаю), доступен на http://www.users.dircon.co.uk/~crypto.
VCU (Velocity Cracking Utilities) программа, основанная на windows, для вскрытия паролей. VCU пытается делать раскалывание паролей простой задачей для компьютерных пользователей любого уровня опыта (за что ей большое спасибо от системных администраторов). Загрузить можно с http://wilter.com/wf/vcu.
Я надеюсь, что это достаточное побуждение, чтобы использовать теневые пароли и более сильное шифрование подобно MD5 (которое поддерживает Red Hat 6.0).
Как надежно Вы храните пароли? Наиболее очевидный метод состоит в том, чтобы запомнить их, это однако имеет тот недостаток что, если Вы управляете 30 различными местами, Вы захотите иметь 30 различных паролей, а хороший пароль (8 символов в длину) не самая простая вещь, чтобы запомнить. Это ведет к тому, что многие люди используют те же самые пароли на нескольких системах. Лучшая идея: сохранить пароли в шифрованном формате, обычно с помощью электроники на Вашем компьютере. Вы должны помнить только один пароль, чтобы отпереть остальные, которые Вы можете затем использовать. Чтобы выполнить это может использоваться PGP или GnuPG.
Gpasman прикладная программа, которая требует GTK (относительно легко установить на не Gnome-систему, поставьте только библиотеки GTK). Она шифрует пароли, используя алгоритм rc2. После запуска программы Вы напечатаете Ваш главный пароль и будете обеспечены хорошим списком Ваших логинов, сайтов, паролей и полей для комментария. Gpasman доступен на http://gpasman.nl.linux.org.
Strip программа для карманного недокомпьютера palm pilot. Хрнаит пароли надежно и может также использоваться, чтобы генерировать пароли. Доступна по лицензии GNU с http://www.zetetic.net/products.html.
Written by Kurt Seifried |