ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 

  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: Inet-Admins
Inet-Admins mailing list archive (inet-admins@info.east.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[inet-admins] Вот может кого заинтересует



Приветствую!

Я не знаю, насколко популярен tac+ от Бармина, но я его потрогал и
подрихтовал. Если кого-то заинтересует, я приведу получившееся в товарный
вид, попробую отдокументировать по-человечески и выложу куда-нибудь на
обозримое место.


Изменения по сравнению с версией Владимира Бармина (bwm@mvc.net):
-----------------------------------------------------------------


В лучшую (возможно) сторону:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Данная версия базируется на версии tacacs+ 3.0.x (в настоящее время 3.0.9,
но я полагаю, что методом diff/patch все изменения без особого труда можно
наложить на любую из более поздних версий, более того - дайте мне свежее и я
это сделаю сам :).

Кроме deny добавлено также и allow (ниже станет понятно зачем). То есть
проверяется сначала одно, потом другое - порядок проверки по умолчанию
'allow then deny', то есть allow в случае присутствия обоих файлов имеет
приоритет. Этот порядок можно изменить на обратный включением описания
DENY_THEN_ALLOW в Makefile.

Для deny, allow и crontab теперь работает общее правило рекурсии. Если
соответствующие файлы не найдены для пользователя, то проверяются
соответствующие файлы для группы, в которую входит пользователь, далее для
группы, в которую входит эта группа и т.д. То есть можно манипулировать
целиком группами, перекрывая в них установки для подгрупп и отдельных
пользователей. Теперь понятно, зачем добавлено allow - можно закрывать
целиком группу, оставляя в ней заход для отдельных пользователей. Если
рекурсия исчерпана, и ни deny ни allow так и не найдено, то заход
разрешается.

Все расширения от bwm теперь можно включать/отключать по отдельности при
сборке - в Makefile. Там же теперь можно переописать все соответствующие
файлы и каталоги.

Изменены значения по умолчанию для имен этих файлов и каталогов - все
перемещено из каталога /var/adm в каталог /var/adm/tac_plus. Исправьте в
Makefile, если необходимо сохранить совместимость.

Некоторые имена описаний (defines) для этих файлов и каталогов изменены. Это
не суть важно, если вы не лазали в исходники еще и сами, в противном случае
разберетесь по Makefile и tac_plus.h

В crontab и ttys теперь можно использовать алиасы - в специальном файле
можно поставить в соответствие истинному адресу/имени NAS'а алиас - это
упростит ревизию crontab и ttys в случае изменений адресов/имен NAS'ов.
Алиасы могут также использоваться и в utmp/wtmp, но это по желанию - при
сборке можно задать три режима: писать всегда настоящее имя/адрес; писать
всегда алиас (если есть); писать в точности как во вхождении в ttys (это
значение по умолчанию). При вызове пред- и послеавторизационных программ
может использоваться переменная $alias.

Теперь при сборке можно задавать syslog facility в Makefile (описание
LOG_FACIL). По умолчанию LOG_LOCAL6. Я, в силу своей
административно-сексуальной ориентации, предпочитаю LOG_LOCAL2 :) Не
спрашивайте почему - оно мне нравится :)

Добавлено описание UNIX_LOGIN. Если вы его включили, то в приглашении
"\nUser Access Verification\n\nUsername: " слово "Username" заменяется на
"login", а любому отлупу, выдаваемому если данная верификация не прошла,
предшествует фраза "Login incorrect". Это может помочь, если вы ранее
использовали в качестве сереверов доступа Unix-box'ы, и пользовательские
скрипты заточены под их привычки :)

Расширения от bwm работают теперь не только для пользователей, прописанных в
passwd-файле такакса, но и вообще для всех пользователей - в том числе
описанных только в конфиге, либо в /etc/master.passwd. Если NAS'ом является
Unix-box с tacacs login от bwm, то для таких пользователей ему возвращаются
uid и gid, которые можно прописать в Makefile (см. описания NOPUID и NOPGID,
по умолчанию 32767 и 32766 соответственно), а также пустые строки в качестве
домашнего каталога и шелла. Естественно, никакого особого смысла в заведении
подобных пользователей в данном случае не видится.

В функциях, написанных bwm, исправлены мелкие погрешности ;) Исключены
теоретические возможности buffer overflow (практикуйте безопасный секс -
испотьзуйте strncpy/snprintf :). Добавлена пара debug'овых выводов. Функция
set_usradm_status перестала всегда возвращать 0 (а может быть это была фича,
а не бага, но ее особого смысла я не просек). Кроновская структура,
полученная по кроновской load_entry, стала высвобождаться по кроновской же
free_entry, а не просто по системной free. dbm-база с пользовательскими
лимитами закрывается теперь после того, как использованы все ссылки,
полученные в от'fetch'енной структуре, а не до этого (возможно я
перестраховался - я не специалист по dbm, но логика подсказывает мне, что
при закрытии dbm-файла и высвобождении его дескриптора, все-таки и буфер с
данными высвобождается и вполне может быть поврежден). При повторном вызове
функций из модуля tac_lib теперь происходит высвобождение внутренних
динамических буферов перед их новым размещением. Функция init_utmp из
libutil теперь никогда не оставляет незакрытым utmp-файл при неудачном
завершении. Функция login оттуда же теперь делает записи в wtmp только в том
случае, если находит терминал в ttys (как и декларировано автором, но
сделано было почему-то только для utmp).

У bwm был несколько изменен формат даты, выдаваемой в журнал аккаунтинга, но
это не было задокументировано. Теперь можно использовать стандартный формат,
либо формат от bwm (введено в Makefile).

В Makefile введено недокументированное bwm'овское описание LOOKUP_NAMES (в
случае если оно отсутствует, tac+ не пытается определить имя хоста по
IP-адресу, а сразу выдает его в цифровой нотации).

В libutil добавлена функция loginal - расширенная login, заменяющая
последнюю при использовании алиасов.

Версия отпатчена на предмет корректности MAXSESSION (патч от Mike Shoyher
<msh@corbina.net>)

В Makefile появился мой псевдоанглийский, которому меня научила жизнь :) Все
же преподаватели во всех учебных заведениях почему-то считали, что мне как
воздух необходимо знание немецкого :)


Просто в сторону:
~~~~~~~~~~~~~~~~~

Базовой системой для работы в настоящее время является BSDI BSD/OS 2.1 (я
планирую переместиться на FreeBSD 2.2.x до конца года). Поэтому произведены
соответствующие изменения в Makefile. Модули (исходники) для cron и libutil
также взяты из числа поставляемых с этой ОС (BSDI), со всеми патчами, ежели
таковые были. Я полагаю, что любой желающий может заменить эти модули на
аналоги из своей любимой ОС или просто на более свежие версии, если хочет
повозиться, конечно :)


В худшую (возможно) сторону:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Не поддерживаются ключи -W -U -T -D, с помощью которых можно изменять
заданные при сборке имена некоторых файлов и каталогов. По мне, так уж либо
для всех файлов такое делать (лениво), либо ни для каких (кому все-таки надо
- обоснуйте :)

Из всех выдаваемых в качестве сообщения от демона строк, добавленных bwm,
убран символ '\r', оставлен только '\n'. '\r' присутствовал только в
добавленных строках, в оригинальных его не было, поэтому я счел возможным
произвести эту кастрацию (возможно я не прав, но сам я этого по результатам
работы не заметил).



-- 
  Pavel N. Vladimirov                                  pasa@pleskov.ru
  Administration of Pskov Region                       FIDO 2:5033/2
=============================================================================
"inet-admins" Internet access mailing list. Maintained by East Connection ISP.
Mail "unsubscribe inet-admins" to Majordomo@info.east.ru if you want to quit.



 




Copyright © Lexa Software, 1996-2009.