The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Построение модемного пула Cisco 2600 с использованием tacacs+ и Linux (cisco modem dialup dila-in tacacs auth)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: cisco, modem, dialup, dila-in, tacacs, auth,  (найти похожие документы)
From: Владимир Леттиев <crux at ssu.komi.com> Newsgroups: http://www.unix.nordcomp.ru Date: Mon, 20 Sep 2004 18:21:07 +0000 (UTC) Subject: Построение модемного пула Cisco 2600 с использованием tacacs+ и Linux Оригинал: http://www.unix.nordcomp.ru/articles.html?page=1&id=9 Построение модемного пула Cisco 2600 с использованием tacacs+ и Linux Автор: Владимир Леттиев E-mail: crux at ssu.komi.com Довольно часто для различного рода организаций возникает задача построения модемного пула для удалённого подключения к локальной сети или интернету. Технически проблема решается несколькими путями. В данной статье будет рассматриватся вариант с использованием маршрутизатора Cisco 2620 и специального модуля NM-8AM, состоящего из 8 аналоговых модемов, а также Linux-box'a с установленным tacacs+. Суть технического решения проста. На маршрутизаторе cisco устанавливается модуль с аналоговыми модемами, в который подключаются аналоговые телефонные линии (в нашем случае 8, при использовании модуля NM-16AM таких линий будет 16). Аутентификацию и аккаунтинг подключающихся пользователей будет производить сервер tacacs+, который устанавливается на отдельной машине, в нашем случае это компьютер под управлением ОС Linux. Когда удалённый пользователь будет подключаться к модемному пулу, его логин и пароль будет проверен tacacs+ и произойдёт подключение если авторизация была успешной, либо модем просто повесит трубку (может конечно и ещё раз попросить ввод. это можно настроить), если авторизация не прошла. Вся прелесть подобной организации модемного пула заключается в весьма гибкой настройке ppp-соединения и бюджета подключаемого пользователя. Администратор может определять в какое время может подключаться тот или иной пользователь, сколько времени он может висеть на линии в тот или иной период, сколько может скачать, к каким ресурсам может получить доступ и вообще вести точный подсчёт трафика и соотвествующий денежный эквивалент (с учётом различных тарифов, зависящих от времени подключения - днём дорого, ночью дёшево) и множество других вещей. Установка модемного пула разбивается на два этапа. Первый это хардварная инсталяция модуля в циско, с последующей настройкой софта. Второй - установка и настройка сервера tacacs+ на Linux-box'е. При этом описываются только те настройки, которые используются для поднятия модемного пула (т.е. Линукс вы уже поставили, да и на циско настроили FastEthernet) Аппаратное обеспечение: cisco 2620, NM-8AM, компьютер > i386 Программное обеспечение: tac+ia-0.96pre9.3 (модифицированная версия tacacs+), последняя версия которого может быть найдена по адресу ftp://ftp.vsu.ru/pub/hardware/cisco/tacacs/ Этап 1. ------- Хардварная инсталляция модуля проста и описывается в прилагаемой документации в к модулю. Тут неплохо учесть, что циска после включения питания, обнаружив новый модуль попытается скачать с инета софт для него. Этого не стоит допускать, поэтому просто выдерните сетевой кабель. Циско через некоторое время прекратит свои попытки. Теперь заходим на консоль, переключаемся в режим enable. (Здесь и далее я буду приводить полные названия команд, несмотря на то, что cisco поддерживает укороченный вид ввода команд, т.к. это более понятно, чем запись типа "conf t"). Командой show line можно получить информацию о состоянии линий. #show line Tty Typ Tx/Rx A Modem Roty AccO AccI Uses Noise Overruns Int 33 TTY - inout - - - 0 0 0/0 34 TTY - inout - - - 0 0 0/0 35 TTY - inout - - - 0 0 0/0 36 TTY - inout - - - 0 0 0/0 37 TTY - inout - - - 0 0 0/0 38 TTY - inout - - - 0 0 0/0 39 TTY - inout - - - 0 0 0/0 40 TTY - inout - - - 0 0 0/0 Как видно все 8 модемных линий корректно определены системой и готовы к работе. Если всё так, то можно приступать к дальнейшей работе. Настройка асинхронных интерфейсов: configure terminal # Конфигурируем с терминала interface Group-Async1 # Все интерфейсы объединяем в группу ip unnumbered FastEthernet0/0 # Присваиваем ip адрес интерфейса # FastEthernet группе no ip directed-broadcast encapsulation ppp keepalive 10 async default routing async dynamic address async dynamic routing async mode dedicated peer default ip address pool POOL # Ip адреса для принимающей стороны # будут выдаваться из пула адресов POOL, # который мы определим позже no cdp enable ppp authentication chap # Тип аутентификации chap group-range 33 40 # список линий входящий в группу Настройка группы закончена, даём команду exit и начинаем конфигурировать линии: line 33 40 session-timeout 5 # Если в течении 5 минут нет трафика, # то вешаем трубку autoselect during-login autoselect ppp modem In # Модем только принимает звонки transport input telnet escape-character NONE flowcontrol hardware Линии сконфигурированы, настраиваем cisco на работу с tacacs+ сервером: aaa new-model aaa authentication login default line tacacs+ aaa authentication ppp default tacacs+ aaa authentication ppp ppp_list tacacs+ aaa authorization network default tacacs+ aaa accounting network default start-stop tacacs+ Приведённые выше команды обеспечивают работу cisco с внешним tacacs+ сервером. Определённые сомнения у меня вызывают необходимость 2 и 5 строчки, но на всякий случай я их ввёл. Далее указывается ip-адрес машины, на котрой будет вертется tacacs+ сервер и секретный ключ, которым будет криптоваться логины и пароли пользователей, передаваемые по сети. Ключ может представлять собой случайную комбинацию символов, запомните его, он потребуется при настройке сервера tacacs+. tacacs-server host XXX.XXX.XXX.XXX tacacs-server key ********** Далее мы наконец вводим пул адресов, который будут получать клиенты при соединении ip local pool POOL 192.168.1.101 192.168.1.108 И ещё немаловажный момент. В будущем нам потребуется принудительно скидывать пользователей с линии. Для этого необходимо сделать доступ по rsh к циско с севера tacacs+ : ip rcmd rsh-enable ip rcmd remote-host root XXX.XXX.XXX.XXX root enable где xxx.xxx.xxx.xxx - адрес сервера tacacs+. Следующие строки устанавливают правила доступа, которые получают подключающиеся пользователи. Этот фрагмент просто пример, что можно вытворять админу. Тут я открываю клиентам доступ только к почте на сервере 192.168.1.1. Сразу оговорюсь, что правила начнут свою работу, только после того как в конфигурациооном файле tacacs+ я назначу пользователям этот access list. access-list 110 permit tcp any host 192.168.1.1 eq smtp access-list 110 permit tcp any host 192.168.1.1 eq pop3 access-list 110 permit tcp any host 192.168.1.1 eq domain access-list 110 permit udp any host 192.168.1.1 eq domain access-list 110 permit icmp any any access-list 110 deny ip any any На данном этапе с циской всё. Закрывайте терминал и открывайте терминал с вашим Linux-Box'ом. Этап 2. Небольшое отступление. Почему tac+ia, а не родной вариант фирмы Cisco tacacs+? Всё просто. Во-первых tac+ia включает в себя tacacs+ и во-вторых дополнен всевозможными утилитками для удобного администрирования модемного пула. Пакет целиком заточен под провайдерские конторы (чувствуется, при чтении мануала). Ну и то радует, что делали его наши, т.е. в России. Скачайте последнюю версию tac+ia (на момент написания статьи - это 0.96). Разверните исходники в /usr/local/src Для начала почитайте, что выдаст следующая команда: ./configure --help При конфигурировании вы можете задать различные опции (определяющие место положения скомпилиных исходников, логов и т.п.). Я не мудурствуя лукаво просто сделал так: ./configure make make install Всё было конечно бы классно. Если бы на этапе make у меня не вывалились сообщения об ошибках. Как потом я разобрался суть заключалась в том, что tac+ia требует хидерс файлы db. Я устаналивал tac+ia на Mandrake Linux 8.2. В системе были установлены следующие пакеты db1-1.85-7mdk.i596.rpm и db1-devel-1.85-7mdk.i586.rpm. Файл db.h находился в каталоге /usr/include/db1 , а не /usr/include - как ожидал tac+ia. Пришлось вручную править makefile'ы в подкаталогах tac_plus и acctd, где я добавил в CFLAGS параметр -I/usr/include/db1 и к LDFLAGS я поставил значение -L/usr/lib -ldb1 .После чего компиляция прошла успешно. С make install тоже был какой-то глюк. Вручную создавал все папки куда должны были быть скопированы бинарники. Надеюсь вас такие проблемы обойдут. Конфигурационный файл tac_plus.conf Файл конфигурации tacacs+ находится по дефолту в /etc/tac_plus Здесь описываются некоторые необходимые для работы tacacs+ параметры, ну и пользователи, которые будут подключаться к пулу. Вот небольшой пример, на основе которого вы с лёгкостью сможете построить свой собственный конфигурационный файл. Описывать все возможные опции и возможности не имеет смысла по той простой причине, что все они очень подробно изложены в README входящий в пакет tac+ia, причём на родном русском языке (разработчики наши %) ---------------------------------------------------------------- # # /etc/tac_plus/tac_plus.conf example # key=********* # Тот самый ключ для шифрования, который прописали # на циско # Пример настройки одного пользователя user = crux { chap = cleartext GueSSMeHacKeR # Тут прямым текстом пишется пароль юзера %( maxsess = 1 # макс. количество сессий service = exec # запускаем { autocmd = "ppp" # ppp } service = ppp protocol = ip # инкапсуляция протокола ip { default attribute = permit # пустить addr-pool = "POOL" # выдать адрес из пула POOL dns-servers = "192.168.1.1" # заодно подсказать, где у нас ДНС route="0.0.0.0 0.0.0.0 192.168.1.254" # а вот эта фенька может вам не понадобиться, # потому что тут я роутю все пакеты юзера # прямиком на мой шлюз 192.168.1.254, а шлюз # уже сам решает, что делать. } } # пример настройки группы group = local { maxsess = 1 users = man_* # Тут указываются члены группы local # (используется регул. выражение) service = exec { autocmd = "ppp" } service = ppp protocol = ip { default attribute = permit addr-pool = "POOL" dns-servers = "192.168.1.1" route="0.0.0.0 0.0.0.0 192.168.1.254" inacl = "110" # А вот этой строкой я заставляю циску применить для # данной группы access-list под номером 110 } } user = man_* # Тут собственно описываются юзер(s) группы local { chap = file "/etc/tac_plus/users/passwd" # Пароли пользователей берутся из файла maxsess = 1 member = local # Член группы local } # ВС╗ Формат файла "/etc/tac_plus/users/passwd" таков: man_1:password1:50:50::: man_2:password2:50:50::: .... ---------------------------------------------------------------- Т.е. имя юзера:пароль:..., сходен с форматом обычного passwd Обращаю ваше внимание, что все пароли хранятся открытым текстом, что не есть гуд. Поэтому проконтролируйте, чтобы конфигурационный файл и файл паролей был доступен на чтение только пользователю root. Далее, что потребуется для корректного запуска. В /etc/services проверьте наличие такой записи (добавьте если нет): tacacs 49/tcp # Login Host Protocol (TACACS) tacacs 49/udp # Login Host Protocol (TACACS) Также стоит проверить, что файервол не режет соединения на этот порт и то, что правилами разрешён rsh к циско (тут у меня есть небольшой вопрос к ALL, а какой порт используется для rsh?). Заглянем в директорию /var/adm/tac_plus Нас интересует файл ttys. В нём необходимо прописать информацию о наших линиях. Файл состоит из строк, описывающих терминалы (порты) на cisco. Первое поле описывает условную терминальную линию (алиас порта), второе имя хоста, на котором находится терминальная линия. Последующие поля интерпретируются как флаги (в примере флаги опущены). Последние поля интерпретируются как реальные имена портов. Всё, что после символа "#" считается комментарием. Это будет выглядеть примерно так (192.168.1.10 - адрес циски): tty1 192.168.1.10 Async33 # line 1 tty2 192.168.1.10 Async34 # line 2 tty3 192.168.1.10 Async35 # line 3 tty4 192.168.1.10 Async36 # line 4 tty5 192.168.1.10 Async37 # line 5 tty6 192.168.1.10 Async38 # line 6 tty7 192.168.1.10 Async39 # line 7 tty8 192.168.1.10 Async40 # line 8 Более подробно о формате файла ttys читайте в описании пакета tac+ia. Для нормальной работы то , что я указал вполне достаточно, если у вас есть необходимость что-то менять (выставить определённые флаги для линий) - милости просим, читайте мануал. Ну вроде всё готово, запускаем tacacs+ # cd /usr/local/sbin # ./tac_plus -C /etc/tac_plus/tac_plus.conf Если всё нормально с конфигом, то tac_plus будет запущен. Если нет, то читайте /var/log/messages на предмет ошибок. Кстати проверить правильность конфигурационного файла можно такой командой: # ./tac_plus -P /etc/tac_plus/tac_plus.conf tac_plus пропарсит конфигурационный файл и остановится на том месте, где обнаружит ошибку в синтаксисе. Итак, сервер tacacs+ запущен. Чтобы проверить всё ли верно настроено и работает, надо взять модем и дозвониться до пула. Ввести заготовленный логин и пароль и наслаждаться халявным инетом %) Дальнейший тюнинг. Как только мандраж от проделанного пройдёт, можно попробовать настроить tacacs+ так, чтобы можно было манипулировать пользовательскими бюджетами. Под бюджетом я понимаю совокупность всевозможных ресурсов, предоставляемых пользователю. Это может быть ограничения по времени, лимиты по трафику и очень много других интересных возможностей. Конечно tac+ia богат этими возможностями и описание их это тема отдельной статьи (которую я возможно скоро и предоставлю общественному вниманию). Сейчас бы я хотел сосредоточиться на двух моментах. Первое - это как просмотреть статистику посещений и второе - как реализовать механизм отключения пользователей, при превышении лимита времени на одно соединение. Файл /var/adm/tac_plus/acctfile - это журнал посещений. В нём записывается информация о всех залогинившихся пользователях. Время, пользователь, количество переданных/полученных пакетов/байтов и другое. Как я понял, с пакетом tac+ia не поставляется никаких утилит, которые бы создавали отчёты (текстовые или html) по этому логу. Поэтому тут всё на ваше усмотрение, нужны отчёты - пишите скриптик на перле и вперёд. Файл текстовый, формат интуитивно понятный, сложностей особых не видится. Сброс пользователя с линии. Для сброса (ручного) пользователя с линии предлагается использовать поставляемый скрипт killuser. Правда - это всего лишь пример реализации, поэтому его придётся подправить. Вот мой вариант: ---------------------------------------------------------------- #!/bin/sh # $1 user, $2 line, $3 host test $# = 3 || exit line=`echo $2 | cut -c4-` line=`expr $line + 32` # т.к. номера Async-портов начинаются с 33, case $3 in #а номера tty с 1, то надо прибавить к 192.168.1.10) # полученному числу 32.. (sleep 15; echo 'y') | rsh $3 "cle li $line" >/dev/null 2>&1 ;; esac ---------------------------------------------------------------- Где 192.168.1.10 - адрес циски. Ему передаются три параметра юзер, линия и хост. Предположим, что у вас задача принудительно скинуть пользователя с линии, если он на ней висит больше часа. Вариант действий тут такой. Во-первых, надо внести всех пользователей в базу (файл /var/adm/tac_plus/user.db) # cd /usr/local/sbin # ./macct -с man_1 --tl nolimit --dl nolimit Данная команда создаст в базе юзера man_1 с безграничным лимитом времени вообще(--tl) и за день (--dl). Если вы не хотите делать безграничный лимит времени, то можете выставить соотвествующие значения времени в минутах. Удаляет пользователя команда macct -d user, а список пользователей можно вывести просто набрав macct. Теперь надо запустить демона acctd. Который и будет отслеживать время работы пользователей на линии и отключать (при помощи killuser) их при достижении лимитов. # ./acctd -a 3600 Параметр -a указывает сколько максимально может висеть на линии пользователь при любых значениях его лимита времени. Значение 3600 (секунды) - это и есть час. Т.е. любой пользователь сможет занимать линию не более часа. Что и требовалось доказать. Заключение. Труд получился весьма объёмным. И я даже не смог включить сюда интересный материал по другим возможностям пакета tac+ia (их там ещё много :) Но это думаю можно будет реализовать в ещё одной статье. Возможно скоро мне потребуется создать скрипт, для генерации отчёта по пользователям. Свой вариант я (с позволения Гриши) обязательно выложу на всеобщее обозрение, может кому-то пригодится. Разобраться со всем вышеизложенным мне сильно помог Игорь Успенский, ну а также кое-какие электронные материалы: 1. CISCO-FAQ http://rcp.ru/faq/cisco.html 2. Software Configuration Guide for Cisco 3600 Series and Cisco 2600 Series Routers 3. Список рассылки tac+ia [email protected] 4. Документация, поставляемая с пакетом tac+ia Время создания: 2002-11-22 17:32:28 © Сыктывкарское сообщество UNIX, 2002 - 2003 г.

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1, Serg (??), 21:33, 24/01/2005 [ответить]  
  • +/
    Интересно, создали скриптики для генерации отчетов по пользователям?
    Если да, то сообщите пожалуйста мне
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру