Добрый день, джентльмены.
Недавно возникал вопрос об организации dialup доступа посредством unix
boxes, в частности, интересовал вопрос "проброса" соединений через
ssh. Попробую с несущественными упрощениями расписать на своем
извращенном примере. У нас небольшой пул из 15 номеров, в качестве
"модемных стоек" выступают FreeBSDшные четверки с четырьмя нутряными
модемами, в качестве сервера AAA используется tac+ia (особая
благодарность всем авторам за прекрасный продукт). Сами четверки
совершенно пустые, ибо вся их задача - ответить на звонок с помощью
mgetty и, в случае необходимости, пробросить clear соединение через
ssh на центральный сервер. В login.conf mgetty прописаны следующие
строчки:
/AutoPPP/ - a_ppp /usr/local/bin/ssh -q -e none -l ppppap server
pp* - a_ppp /usr/local/bin/ssh -q -t -e none -l ppplog server @
На сервере заведены пользователи ppppap и ppplog без паролей (для
повышения секурности можно использовать .shosts and/or RSA, хотя мне
кажется это избыточным, ибо аутентификация после проброса все равно
проводится pppd или tlogin'ом), в качестве шелла этим пользователям
прописаны соответственно:
/usr/local/bin/rpppd (с помощью sudo запускает pppd, который проводит
PAP-аутентификацию через такакс) и
/usr/bin/tlogin (slightly modified скрипт Дениса Шапошникова, который
опять же производит аутентификацию через такакс и дает авторизацию на
выполнение pppd, опять же через sudo).
В такаксе все очевидно.
Нюансы.
1. Один из вопросов был связан с тем, что ssh не аллокейтит tty,
поэтому pppd не к чему подцепиться.
Армянское радио отвечает: RFTM.
=== man ssh
-t Force pseudo-tty allocation. This can be used to
execute arbitary screen-based programs on a remote
machine, which can be very useful e.g. when imple-
menting menu services.
===
В моем случае это необходимо только при запуске tlogin'а, поскольку в
качестве запускаемой команды ему передается имя пользователя, а pppd
запускается как обычный shell без параметров, при этом замечательно
аллокейтит tty.
2. Sudo необходим для того, чтобы pppd подцепился к псевдотерминалу,
что он хочет делать только от суперюзера.
3. Модификация tlogin элементарная - игнорировать command line
parameters, ибо "ssh ... -l ppplog server @" запускает на удаленной
машине tlogin -c USERNAME, что и понятно, а оригинальный tlogin просто
берет первый аргумент в качестве USERNAME, который, как нетрудно
догадаться, получается "-с" :).
4. Можно было бы, конечно, пойти по правильному пути: pppd запускать
на самих unix boxes; аутентификацию, авторизацию, раздачу слонов и
адресов проводить через централизованный такакс, etc., а интерфейсы
поднимать на самих unix boxes. Но мне это показалось излишним
усложнением конструкции, которое может привести к уменьшению
надежности функционирования системы в целом; возможно, к потребности в
более навороченной технике. Кроме того, у меня на сервере при каждом
заходе включаются счетчики ipfw, в результате, параллельно с учетом,
ведущимся acctd, считается трафик на каждого пользователя, статистика
по выдаче псевдостатических адресов, и т.п. Это позволяет, например,
выделять пользователю не время, а объем информации, сверяя его в
постаутентификационном скрипте. И еще... _как минимум_, одним хопом у
клиентов меньше :)
Очевидно, что система легко расширяема как добавлением очередного unix
box, полученного клонированием ;), так и любого access server'а,
любящего такакс.
Беспрецедентны затраты на организацию такого модемного пула, при
гибкости и универсальности, которые ничуть не уступают гибкости и
универсальности дорогостоящих решений.
Чувствую, что где-то в этой конструкции могут быть дыры в
безопасности, но придумать никак не могу; если кто укажет, буду
благодарен, ибо я еще не настоящий сварщик. Любые комментарии
приветствуются. На возможные вопросы постараюсь ответить. Да, работает
это уже около двух лет, правда аутентификацию через tlogin я сделал
только на днях, до этого была только PAP - собственно, поэтому я и
ответил с задержкой, хотел сначала довести все до ума.
Вроде ничего не забыл. Feci quod potui, feciant meliora potentes.
Best regards,
Nicolas mailto:nicolas@avmgroup.ru
=============================================================================
"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.
Archive is accessible on http://info.east.ru/rus/inetadm.html