Date: Fri, 21 Jan 2000 13:44:37 +0300
From: Nicolas Rodionov <nicolas@avmgroup.ru>
Organization: AVM Group
Subject: [inet-admins]
Dialup on unix boxes

Добрый день, джентльмены.

Недавно возникал вопрос об организации 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 implementing 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


Date: Fri, 21 Jan 2000 07:57:50 -0400
From: Yura Pismerov <ypismerov@tucows.com>

Nicolas Rodionov wrote:
>
> Добрый день, джентльмены.
>
> Недавно возникал вопрос об организации dialup доступа посредством unix
> boxes, в частности, интересовал вопрос "проброса" соединений через
> ssh. Попробую с несущественными упрощениями расписать на своем

[полёт мысли skipped]

Бррр... Я не понял, к чему такие навороты ?
А что, элементарный rlogin -8E не работает ?
И зачем на транзитных тачках AutoPPP ?

 

Date: Fri, 21 Jan 2000 16:35:15 +0300
From: Nicolas Rodionov <nicolas@avmgroup.ru>

YP> Бррр... Я не понял, к чему такие навороты ?
YP> А что, элементарный rlogin -8E не работает ?

А чем он лучше ssh? Даже если проброс не идет через untrusted hosts? У меня, например, одна из таких тачек издревле находится в клиентском сегменте, и ничего... и ничего... и ничего... А rlogin я вообще выкинул.

YP> И зачем на транзитных тачках AutoPPP ?

Очевидно, для того, чтобы работала PAP авторизация. А какие еще варианты есть? И чем плох AutoPPP на транзитной тачке?

Best regards,
Nicolas mailto:nicolas@avmgroup.ru