Ключевые слова:radius, cisco, auth, wifi, leap, linux, debian, (найти похожие документы)
From: Олег Гребенёв <grol55@mail.ru.>
Newsgroups: email
Date: Mon, 22 Dec 2009 17:02:14 +0000 (UTC)
Subject: Настройка LEAP-аутентификации для авторизации WiFi-пользователей с использованием Radius-сервераИсходная задача
В организации имеется некоторое количество ноутбуков и WiFi-ip-телефонов и пользователи
очень хотят получить доступ в Интернет по WiFi, а также звонить по этим телефонам.
Решение
Организовать централизованную авторизацию пользователей с использованием Radius - сервера
(FreeRadius), уровень аутентификации на точке доступа WPA2-Enterprise, для аутентификации
использовать EAP (протокол расширенной аутентификации), а конкретней метод LEAP, для
шифрования использовать AES (Advanced Encryption Standard) и CCMP (Counter with Cipher
Block Chaining Message Authentication Code Protocol).
На первый взгляд тема кажется банальной поднять сеть с WPA2-Enterprise аутенфикацией и
RADIUS-сервером для авторизации, вроде и статей куча и мнений экспертов хватает, но это
только на первый взгляд. При практической реализации на конкретном оборудовании и
операционной системе обнаруживается масса камней и преимущественно подводных, каждый
камушек описан отдельно в определенной статье, а вот нормального готового решения, что-то у
меня найти не получилось. Одни разрозненные куски, из которых целая картина не получается
никак. Статья призвана заполнить этот пробел. Для тех ожидает неожиданных мистических
откровений в области беспроводных технологий просьба дальше не читать - инсайтов не будет.
Я просто поделюсь собственным практическим опытом, который состоит из переработки этих
кусков в одно работающее целое.
Детализация решения.
Имеется следующее оборудование: точки доступа Cisco AIR-AP1242AG, Ip - телефоны Cisco 7920,
ноутбуки с WiFi контроллером -- Intel Wireless WiFi Link 4965AGN.
Зачем стоит использовать RADIUS-сервер? Много WiFi-точек разбросано по зданию и намного
проще администрировать логины и пароли пользователей централизованно из одного места, чем
заводить пользователя на каждой беспроводной точке.
Почему шифрование AES-CCMP, существует же уйма методов шифрования беспроводных сетей WEP,
TKIP? AES-CCMP выбран как наиболее лучший обеспечивающий максимальные возможности
безопасности. Очень бы не хотелось, чтобы юные хакеры из соседнего дома подключились к
сети, использующей шифрование WEP заломали бы ее за 4 часа и выкачали половину трекера
torrents.ru за чужой счет. :-)
Почему аутентификация LEAP EAP? Протокол EAP сам по себе является лишь каркасом для методов
аутентификации. Вся прелесть протокола в том, что его очень просто реализовать на
аутентификаторе (точке доступа), так как ей не требуется знать никаких специфичных
особенностей различных методов аутентификации. Аутентификатор служит лишь передаточным
звеном между клиентом и сервером аутентификации. Методов же аутентификации, которых
существует довольно много EAP-SIM, EAP-MD5, EAP-MSCHAP V2, EAP-TLS, EAP-SecureID и т. д.
EAP LEAP - пропреоретарный метод аутентификации от Cisco systems, он проигрывает по
безопасности EAP-TLS, но зато хорошо работает в ip -- телефонах Cisco 7920. Но хоть этот
протокол проприеоретарный, он поддерживается FreeRADIUS.
Кстати, в округе ноутбук нашел 2 беспроводные сети: одну с Open Autentification (заходи кто
хочет и делай что хочет), а вторую с шифрованием WEP. (Тоже шифрование не фонтан.)
Структура существующей сети следующая
Немного теории
Нет ничего практичней хорошей теории. Рассмотрим аутентификацию EAP с ипользованием
RADIUS-сервера. Кусок теории взят отсюда http://www.ixbt.com/comm/prac-wpa-eap.shtml
Процесс аутентификации. Он состоит из следующих стадий:
1. Клиент может послать запрос на аутентификацию (EAP-start message) в сторону точки
доступа
2. Точка доступа (Аутентификатор) в ответ посылает клиенту запрос на идентификацию клиента
(EAP-request/identity message). Аутентификатор может послать EAP-request
самостоятельно, если увидит, что какой-либо из его портов перешел в активное состояние.
3. Клиент в ответ высылает EAP-response packet с нужными данными, который точка доступа
(аутентификатор) перенаправляет в сторону Radius-сервера (сервера аутентификации).
4. Сервер аутентификации посылает аутентификатору (точке доступа) challenge-пакет (запрос
информации о подлинности клиента). Аутентификатор пересылает его клиенту.
5. Далее происходит процесс взаимной идентификации сервера и клиента. Количество стадий
пересылки пакетов туда-сюда варьируется в зависимости от метода EAP, но для
беспроводных сетей приемлема лишь <<strong>> аутентификация с взаимной аутентификацией
клиента и сервера (EAP-TLS, EAP-TTLS, EAP-PEAP) и предварительным шифрованием канала
связи.
6. На следующий стадии, сервер аутентификации, получив от клиента необходимую информацию,
разрешает (accept) или запрещает (reject) тому доступ, с пересылкой данного сообщения
аутентификатору. Аутентификатор (точка доступа) открывает порт для Supplicant-а, если
со стороны RADIUS-сервера пришел положительный ответ (Accept).
7. Порт открывается, аутентификатор пересылает клиенту сообщение об успешном завершении
процесса, и клиент получает доступ в сеть.
8. После отключения клиента, порт на точке доступа опять переходит в состояние <<закрыт>>
Описанный процесс проиллюстрирован на рис. (там показан один из простейших методов EAP):
Как видно из рисунка, для коммуникации между клиентом (supplicant) и точкой доступа
(authenticator) используются пакеты EAPOL. Протокол RADIUS используется для обмена
информацией между аутентификатором (точкой доступа) и RADIUS-сервером (сервером
аутентификации). При транзитной пересылке информации между клиентом и сервером
аутентификации пакеты EAP переупаковываются из одного формата в другой на аутентификаторе.
Детальное рассмотрение алгоритмов шифрования, а также методы генерации сессионных ключей
шифрования, пожалуй, выходят за рамки данного материала>>
Установка freeradius сервера
Рассмотрим установку и настройка ty-rad-02 нашего Radius-сервера. Вот здесь начинается путь
полный опасностей и приключений. :-)
В качестве операционной систему будем использовать Ubuntu 8.04.3. Почему же не 9.04, а 9.10
Во-первых, поддержка 8.04 LTS будет проходить до 2011 года, во-вторых, там freeradius
версии 1.1.7, а не 2.1.7. Новое иногда не значит лучшее - разобраться с генерацией ключей в
новой версии - лично я не смог. Каждый автор рекомендует что-то свое для генерации ключей,
но почему-то на практике все дороги ведут в тупик. Поэтому работаю с предыдущей версией
freeradius.
Установили Ubuntu 8.04.3 написали команду
# apt-get update && apt-get upgrade -y && apt-get dist-upgrade -y
обновили систему
Отредактировали /etc/network/interfaces, чтобы задать ip-адрес
auto eth0
iface eth0 inet static
address 192.168.131.232
netmask 255.255.252.0
gateway 192.168.131.254
Поправили DNS /etc/resolv.conf
nameserver 192.168.131.209
перестартуем сеть
# /etc/init.d/networking restart
Эти пакеты устанавливаем по вкусу
поддержка русского языка в консоле
# apt-get install console-cyrillic
устанавливаем более красивый аналог top и файловый менеджер mc
# apt-get install htop mc
Устанавливаем сам freeradius-сервер.
На первый взгляд кажется все банальным установка должна проводится apt-get install
freeradius, а нет - тупик. Программа ставится, настраивается, но работать так как надо не
хочет. Ну не поддерживает устанавливаемый пакет сильную криптографию и всё! А оставлять
свою сеть на растерзание юным недохакерам сильно не хочется.
Пойдем другим путем выкачаем с сайта http://freeradius.org исходники, отредактируем
файлы, чтобы поддерживала сильную криптографию и вновь тупик - не хватает определенных
библиотек - вообщем через полдня борьбы я понял - это не мой путь. :-)
Пойдем третьим путем. У ubuntu есть репозитарий исходных текстов из которых получаются
deb-пакеты. Вот эти тексты и будем использовать.
установим компиляторы и библиотеки необходимые для компиляции пакета.
# apt-get install build-essential
установим программу для управления репозитарием исходнков
# apt-get install apt-src
обновим репозитарий
# apt-src update
перейдем в домашний каталог root
# cd /root
создадим папку куда будем закачивать исходники
# mkdir ~/build_freeradius
# cd ~/build_freeradius
скачаем все необходимые исходники и библиотеки, необходимые для компиляции.
# apt-src install freeradius
Правим файл ~/build_freeradius/freeradius-1.1.7/debian/rules
В нем приводим строку configure к следующему виду (включаем сильную криптографию)
./configure \
$(confflags) \
--prefix=/usr \
--exec-prefix=/usr \
--mandir=$(mandir) \
--sysconfdir=/etc \
--libdir=$(libdir) \
--datadir=/usr/share \
--localstatedir=/var \
--with-raddbdir=$(raddbdir) \
--with-logdir=/var/log/$(package) \
--enable-ltdl-install=no --enable-strict-dependencies \
--with-large-files --with-udpfromto --with-edir \
--enable-developer \
--config-cache \
--with-rlm_eap_tls \
--with-rlm_eap_ttls \
--with-rlm_eap_peap \
--without-rlm_otp \
--with-rlm_sql_postgresql_lib_dir=`pg_config --libdir` \
--with-rlm_sql_postgresql_include_dir=`pg_config --includedir` \
--with-openssl \
--with-system-libtool
Комментируем блок
# for pkg in $(shell grep ^Package debian/control | awk '{print $$2}') ; do \
# if dh_shlibdeps -p $$pkg -- -O | grep -q libssl; then \
# echo "$$pkg links to openssl" ;\
# exit 1 ;\
# fi ;\
# done
А в файле ~/build_freeradius/freeradius-1.1.7/debian/contol
добавим в раздел Build-Depends строку ", libssl-dev" он примет вид.
Build-Depends: debhelper (>= 5), libltdl3-dev, libpam0g-dev, libmysqlclient15-dev | libmysqlclient-dev,
libgdbm-dev, libldap2-dev, libsasl2-dev, libiodbc2-dev, libkrb5-dev, snmp, autotools-dev, dpatch
(>= 2), libperl-dev, libtool, dpkg-dev (>= 1.13.19), libpq-dev, libsnmp-dev, libssl-dev
доустановим необходимые библиотеки
# apt-get install libssl-dev libpq-dev
# cd ~/build_freeradius
произведем компиляцию
# apt-src build freeradius
Получили уйму deb-пакетов.
root@ty-rad-02:~/build_freeradius# ls -al
total 4504
drwxr-xr-x 3 root root 4096 2009-12-10 14:31 .
drwxr-xr-x 8 root root 4096 2009-12-10 14:46 ..
drwxr-xr-x 15 root root 4096 2009-12-10 14:31 freeradius-1.1.7
-rw-r--r-- 1 root root 29420 2009-09-17 01:04 freeradius_1.1.7-1ubuntu0.2.diff.gz
-rw-r--r-- 1 root root 1089 2009-09-17 01:04 freeradius_1.1.7-1ubuntu0.2.dsc
-rw-r--r-- 1 root root 2092 2009-12-10 14:31 freeradius_1.1.7-1ubuntu0.2_i386.changes
-rw-r--r-- 1 root root 801840 2009-12-10 14:31 freeradius_1.1.7-1ubuntu0.2_i386.deb
-rw-r--r-- 1 root root 2673548 2007-10-24 02:06 freeradius_1.1.7.orig.tar.gz
-rw-r--r-- 1 root root 741064 2009-12-10 14:31 freeradius-dbg_1.1.7-1ubuntu0.2_i386.deb
-rw-r--r-- 1 root root 118186 2009-12-10 14:31 freeradius-dialupadmin_1.1.7-1ubuntu0.2_all.deb
-rw-r--r-- 1 root root 34580 2009-12-10 14:31 freeradius-iodbc_1.1.7-1ubuntu0.2_i386.deb
-rw-r--r-- 1 root root 35256 2009-12-10 14:31 freeradius-krb5_1.1.7-1ubuntu0.2_i386.deb
-rw-r--r-- 1 root root 52176 2009-12-10 14:31 freeradius-ldap_1.1.7-1ubuntu0.2_i386.deb
-rw-r--r-- 1 root root 34824 2009-12-10 14:31 freeradius-mysql_1.1.7-1ubuntu0.2_i386.deb
-rw-r--r-- 1 root root 34958 2009-12-10 14:31 freeradius-postgresql_1.1.7-1ubuntu0.2_i386.deb
установим freeradius
# dkpg -i freeradius_1.1.7-1ubuntu0.2_i386.deb
установим openssl
# apt-get install openssl
# echo 'freeradius hold' | dpkg --set-selections
# echo 'libfreeradius2 hold' | dpkg --set-selections
# echo 'freeradius-common hold' | dpkg --set-selections
заморозим пакеты от возможных будущим обновлений.
Поздравляю freeradius-сервер установлен.
Настройка freeradius сервера
# cd /etc/freeradius
Пропишем нашу точку доступа в файле clients.conf
# sed '/ *#/d; /^ *$/d' clients.conf
client 127.0.0.1 { #локальная авторизация
secret = testing123
shortname = localhost
}
client 192.168.131.191/22 { # это ее ip-адрес
secret = testing123 # секретный пароль
shortname = ap1242 # ее короткое имя
nastype = cisco # тип точки доступа Ciscorad_recv: Access-Reject
}
Пропишем имя клиента (его логин/пароль)
# sed '/ *#/d; /^ *$/d' users
testuser Cleartext-Password := "secret149"
grol Cleartext-Password := "testing123"
Настроим параметры аутентификации
# sed '/ *#/d; /^ *$/d' eap.conf
eap {
default_eap_type = leap #настроим аутентификацю по умолчанию leap
timer_expire = 60
ignore_unknown_eap_types = no
cisco_accounting_username_bug = no
md5 {
}
leap {
}
gtc {
auth_type = PAP
}
tls {
# параметры ниже оставим по умолчанию, но лучше перегенерировать корневой сертификат и
# сертификат сервера
private_key_password = whatever
private_key_file = ${raddbdir}/certs/cert-srv.pem
certificate_file = ${raddbdir}/certs/cert-srv.pem
CA_file = ${raddbdir}/certs/demoCA/cacert.pem
dh_file = ${raddbdir}/certs/dh
random_file = ${raddbdir}/certs/random
}
peap {
default_eap_type = mschapv2
}
mschapv2 {
}
}
Настроим основной файл радиус-сервера radiusd.conf
Исправим раздел modules
mschap {
use_mppe = yes
require_encryption = yes
require_strong = yes
}
А так же секции autorize и authenticate
authorize {
preprocess rad_recv: Access-Reject
chap
mschap
suffix
eap
files
pap
}
authenticate {
Auth-Type PAP {
pap
}
Auth-Type CHAP {
chap
}
Auth-Type MS-CHAP {
mschap
}
unix
eap
}
Сгенерируем ключ Дифти-Хелмана
# cd /etc/freeradius/certs
# openssl dhparam -out dh 1024
Перезапустим freeradius сервер
# /etc/init.d/freeradius restart
Проверим все ли корректно мы настроили авторизуемся локально
# radtest grol testing123 localhost 1812 testing123
Sending Access-Request of id 0 to 127.0.0.1 port 1812
User-Name = "grol"
User-Password = "testing123"
NAS-IP-Address = 255.255.255.255
NAS-Port = 1812
rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=0, length=20
Если появилось "rad_recv: Access-Reject" значит что-то настроили не-то.
После этой проверки настройку freeradius-сервера можно считать завершенной.
Настройка точки доступа
Подключимся синим консольным кабелем к нашей точке доступа Cisco Aironet 1242AG. Для
подключения в Ubuntu я предпочитаю программу GtkTerm, а в Windows - putty. Параметры
подключения (9600 бод, четность - нет, стоп-бит - 1, бит данных - 8, контроль потока -
нет).
Для чистоты эксперимента -- настройки точки доступа можно сбросить. Для этого надо
выключить питание, нажать и держать кнопку MODE, включить питание, подождать 1-2 секунды,
отпустить кнопку MODE. Пароль на режим enable по-умолчанию будет Cisco.
Перейдем в режим enable и conf t
Зададим имя
# hostname zkp-ap-01
# ip domain name zkprosned.ru
Настроим ssh, telnet - доступ
# crypto key generate rsa generals-keys modulus 1024
# ip ssh time-out 60
# ip ssh authentication-retries 3
# line vty 0 4
# transport input ssh telnet
Настроим пароль на enable
# enable secret testing123
Заведем пару пользователей -- админа и обычного.
# username Admin privilege 15 secret testing123
# username grol secret testing123
Настроим ip-адрес точки доступа.
#interface BVI1
#ip address 192.168.131.191 255.255.252.0
Заходим последовательно в свойства радиоинтерфейса Dot11Radio0 и Dot11Radio1 -- и пишем
команду no shutdown. По умолчанию оба радиоинтерфейса отключены.
#ip default-gateway 192.168.131.254 - Настраиваем шлюз по умолчанию.
Сохраним конфигурацию #wr
Заходим через веб-интерфейс (логин/пароль Admin/testing123)
Переходим на вкладку Security - SSID Manager
Заполняем поле SSID и ставим галочку "Network EAP"
и устанавливаем Set Single Guest Mode SSID на FGUZKP72,
т. е. разрешаем гостевой режим. "Все флаги - гости будут к нам" (с) Шекспир ;-)
Вкладка "Encryption Manager" Шифрование ставим Cipher --
AES-CCMP
Во вкладке Server Manager -- Server 192.168.131.232 Shared Secret testing123 Указываем
ip-адрес нашего freeradius-сервера и с каким паролем наша точка доступа будет
авторизоваться.
В EAP Authentication выбираем наш radius-сервер.
В принципе настройки все.
Сохраняемся и перезагружаем точку, я заметил, что изменение настроек шифрования вступает в
силу только после перезагрузки точки доступа.
Полный конфиг точки доступа приводится ниже.
!
version 12.3
no service pad
service timestamps debug datetime msec
service timestamps log datetime msec
service password-encryption
!
hostname zkp-ap-01
!
enable secret 5 $1$XXXXXXXXXXXXXXXXXXXXXX.
!
ip subnet-zero
ip domain name zkprosned.ru
ip name-server 192.168.131.209
!
!
ip ssh time-out 60
aaa new-model
!
!
aaa group server radius rad_eap
server 192.168.131.232 auth-port 1812 acct-port 1813
!
aaa group server radius rad_mac
!
aaa group server radius rad_acct
!
aaa group server radius rad_admin
!
aaa group server tacacs+ tac_admin
!
aaa group server radius rad_pmip
!
aaa group server radius dummy Снимок-Cisco IOS Series AP - Security - SSID Manager - Mozilla Firefox
!
aaa authentication login eap_methods group rad_eap
aaa authentication login mac_methods local
aaa authorization exec default local
aaa accounting network acct_methods start-stop group rad_acct
aaa session-id common
!
dot11 ssid FGUZKP72
authentication network-eap eap_methods
authentication key-management wpa
guest-mode
!
power inline negotiation prestandard source
!
!
username Admin privilege 15 secret 5 $1XXXXXXXXXXXXXXXXXX.
username grol secret 5 $XXXXXXXXXXXXXXXXXXXXX
!
bridge irb
!
!
interface Dot11Radio0
no ip address
no ip route-cache
!
encryption mode ciphers aes-ccm
!
ssid FGUZKP72
!
speed basic-1.0 basic-2.0 basic-5.5 6.0 9.0 basic-11.0 12.0 18.0 24.0 36.0 48.0 54.0
station-role root
bridge-group 1
bridge-group 1 subscriber-loop-control
bridge-group 1 block-unknown-source
no bridge-group 1 source-learning
no bridge-group 1 unicast-flooding
bridge-group 1 spanning-disabled
!
interface Dot11Radio1
no ip address
no ip route-cache
!
encryption mode ciphers aes-ccm
!
ssid FGUZKP72
!
dfs band 3 block
speed basic-6.0 9.0 basic-12.0 18.0 basic-24.0 36.0 48.0 54.0
channel dfs
station-role root
bridge-group 1
bridge-group 1 subscriber-loop-control
bridge-group 1 block-unknown-source
no bridge-group 1 source-learning
no bridge-group 1 unicast-flooding
bridge-group 1 spanning-disabled
!
interface FastEthernet0
no ip address
no ip route-cache
duplex auto
speed auto
bridge-group 1
no bridge-group 1 source-learning
bridge-group 1 spanning-disabled
!
interface BVI1
ip address 192.168.131.191 255.255.252.0
no ip route-cache
!
ip default-gateway 192.168.131.254
ip http server
no ip http secure-server
ip http help-path http://www.cisco.com/warp/public/779/smbiz/prodconfig/help/eag
ip radius source-interface BVI1
radius-server local
no authentication eapfast
!
radius-server attribute 32 include-in-access-req format %h
radius-server host 192.168.131.232 auth-port 1812 acct-port 1813 key 7 XXXXXXXXXXX
radius-server vsa send accounting
!
control-plane
!
bridge 1 route ip
!
!
!
line con 0
line vty 0 4
transport input telnet ssh
!
end
Настройка клиенткой машины
Настройку DHCP, кеширующего DNS-сервера AD-01 - я пропущу из-за банальности настроек. Но
для корректной работы -- он должен быть настроен.
По умолчанию Windows XP SP3 не поддерживает аутентификацию LEAP. Скачиваем с сайта ноутбука
с раздела WiFi драйвера программу Intel PROSet/Wireless.
Ищем беспроводные сети и подключаемся найденной сети.
Вводим Аутентификация LEAP - логин/пароль - grol/testing123
Подключаемся к сети и работаем в интернете.
Настройка беспроводного телефона Cisco 7920
Изначально телефон по MAC-адресу надо зарегистрировать на Cisco CallManager 4.2
Для настройки проверки подлинности пользователя беспроводного телефона Cisco 7920 через
RADIUS-сервер, нужно последовательно выбрать:
Menu - Profiles - Network Profile - Profile2 ...
... DHCP - установить Enable.
... TFTP Option - установить Use DHCP.
... 802.11b Configuration - SSID - Specify - установить SSID такой же, какой установлен в беспроводной сети.
... 802.11b Configuration - Authentication - установить LEAP.
... 802.11b Configuration - LEAP - Username - ввести имя пользователя, зарегистрированное на RADIUS-сервере.
... 802.11b Configuration - LEAP - Password - ввести пароль.
... 802.11b Configuration - LEAP - Prompt Mode - Off
... Apply Change
Безопасность
Предложенная модель защиты: аутентификация EAP-LEAP, WPA2 (AES-CCMP), авторизация на
Radius-сервере. Достаточно безопасна. Если впадать в полную паранойю идеальный вариант
EAP-TLS, но его реализация тема отдельной статьи.
Основные недостатки использованных методов.
Взлом Cisco EAP-LEAP. Принцип атаки: вычисляется спиксок MD5-свёрток паролей,
перехватываются фреймы с запросом и ответом, из них извлекается имя пользователя, используя
слабые места протокола - вычисляются два последних бита MD5-свёртки, проводится улучшенный
брут имея уже два известных бита.
Атака на сервер RADIUS. Как и у всего ПО у Радиуса есть некоторые уязвимости. Во-первых
протокол UDP, который использует этот сервер, ни как не мешает нам подсовывать ложные
пакеты. Так же возможен полный перебор для получения доступа, атака "повтор ответа" и
бессмертный DOS.
У всего есть свои недостатки, абсолютную защиту еще не придумали, как и абсолютное
нападение.
Таким образом, в статье рассмотрена настройка EAP-LEAP-аутентификации для авторизации
WiFi-пользователей с использованием FreeRadius-сервера с шифрованием AES-CCMP. Детально
рассмотрены настройки FreeRadius - сервера, точки доступа, клиентского компьютера и
ip-телефона.
Ещё одна статья не раскрывающая тему полностью.
Хотя бы в плане управления пользователями и правилами доступа - взять хотя бы те же лимиты трафика.
Таких статей туева хуча.
1. Как, например, настроить доступ на 200 ноутов или когда человек сегодня пришел, завтра ушел и пришел другой? Каждый раз настраивать ручками?
2. Про управление пользователями ничего не сказано. В файл пихать пользователей - не удобно.
Про связку АД + FreeRADIUS или FreeNIBS или Abills или какую другую систему ничего не сказано, т.е. придется искать отдельно - а это куда нужнее, чем настроить точки и радиус.
Может кто подскажет, как правильно и безопасно реализовать открытую WiFi сеть с авторизацией через FreeRADIUS, удобной системой управления пользователями и тарифами, что бы конечный пользователь открывая страницу в браузере попадал на страницу авторизации и при этом ему ничего не приходилось настраивать.
статья на 10...
2 умелому комментатору: А чё вопросы задаём, статей таких в гугле туева куча;)
судя по кометам тебе хватит сквид + радиус. если не найдёшь в гугле как сквид с радиусом подружить, тебе хватит ldap(там есть для юзверей phpldapadmin))).
2 Есть идеи?: - вариантов немерено, начни с єтой статьи, походу это основа.