Главная » Статьи » МПС

Настройка LEAP-аутентификации для авторизации WiFi-пользователей с использованием Radius-сервера (radius cisco auth wifi leap linux debian)
Немного теории

 Нет ничего практичней хорошей теории. Рассмотрим аутентификацию 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

Категория: МПС | Добавил: Andre99 (10.05.2011) W
Просмотров: 5196 | Теги: radius | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]